{j5ee}





[ Sorry for bad English, I do my best... :) ]

Keywords: native query, TopLink, Oracle, OC4J, The primary key read from the row DatabaseRecord null during the execution of the query was detected to be null. Primary keys must not contain null.

Disclaimer: I still don't understand why second example works, but first does not, so any explanations and help are welcome.

I have spent last three days trying to fix strange bug.
First of all, I work with some big query on big table, so I could not use auto-generated "entity"-queries and I have to use complex native queries.
Secondly, this table was created with composite primary keys, so my first try just doesn't work:


01 @Entity()
02 @Table(name="my_table")
03 @NamedNativeQueries(
04   @NamedNativeQuery(name = "TableEntity.getLastValues",
05       resultClass = TableEntity.class,
07       query =
08         "SELECT t.pt_id, t.time, t.value FROM my_table t " 
09         // + "WHERE something ")
10   )
11 )
18 
19 public class TableEntity implements Serializable
20 {
21   @EmbeddedId
22   @AttributeOverrides({
23     @AttributeOverride(name="parent_id", column=@Column(name="pt_id")),
24     @AttributeOverride(name="time", column=@Column(name="time"))
25   })
26   private CompositeId id = new CompositeId();
27   @Column(name="value")
28   private String value;
29 }

As result, the following exception happened:
Exception [TOPLINK-6044] : oracle.toplink.essentials.exceptions.QueryException
Exception Description: The primary key read from the row [DatabaseRecord(
=> 111
=> 2007-12-17 11:27:16.0
=> 18)] during the execution of the query was detected to be null. Primary keys must not contain null.
Query: ReadAllQuery(test.TableEntity)
at oracle.toplink.essentials.exceptions.QueryException.nullPrimaryKeyInBuildingObject(QueryException.java:808) [and so on]

Sadly, googling does not help :(
Using "cut-and-try method" I found that code below works properly, exactly as I need:


01 @NamedNativeQueries(
02   @NamedNativeQuery(name = "TableEntity.getLastValues",
03       resultSetMapping="myMapping",
04       query =
05         "SELECT t.pt_id \"my_table.pt_id\", t.time \"my_table.time\", t.value \"my_table.value\" FROM my_table t " 
06         // + "WHERE something ")
07   )
08 )
09 @SqlResultSetMapping(name="myMapping"
10     entities=@EntityResult(entityClass=TableEntity.class, fields={
11           @FieldResult(name="id.parent_id", column="pt_id"),
12           @FieldResult(name="id.time", column="time"),
13           @FieldResult(name="value", column="value")
14         })})

















































Вам это будет интересно!

  • Безымянный 74151
  • вот. знайте, что к чему…
  • КвЫZZ
  • Безымянный 124511
  • тесты)))
  • Последние новости

    Слово

    Назови человека свиньей, и он захрюкает. Пословица Проживая данную нам жизнь, мы все время находимся в гуще энергий, как положительных, так и отрицательных. По этическим нормам слово обладает определенной силой, следовательно, когда мы клевещем на человека, судим, обзываем, мы «де...
    Читать далее »

    ЭГРЕГОР

    Энергия эгрегора – квантовая структура, которая сформирована мыслями, знаниями и чувствами всего человечества – бывшего, настоящего и будущего. Эгрегор – это квантово лептонная скоррелированная структура, рожденная похожими мы...
    Читать далее »

    Как открыть свои чакры

    Открытие чакр увеличивает поток энергии в теле и вокруг него и, следовательно, улучшает наше физическое, ментальное и эмоциональное здоровье. Представьте себе каждую чакру по очереди. Они вращаются и становятся больше в размере. Начинайте с 1 – й чакры (пусть они вращаются в любую сторону, обычно они вращаются в разные). В то же ...
    Читать далее »

    Смерть или новая жизнь

    Из разговора двух зародышей в утробе матери: – Как ты думаешь, есть ли жизнь после родов? – Не знаю, оттуда еще никто не возвращался… Сравнительно недавно появились сенсационные сообщения доктора Раймонда А. Моуди о том, что ученые зарегистрировали фа...
    Читать далее »

    Чакры

    Чакры являются основными энергетическими органами биополя. Они контролируют нашу деятельность во внешнем мире, а каждая из чакр несет ответственность за определенную сферу деятельности. Основное предназначение их заключается в том, что они несут ответственность за поддержание энергообмена живого организма с окружающей средой через специальные каналы связи. Таким образом, при нарушении процесса энергообмена у нас возникают болезни и проблемы...
    Читать далее »

    Три колонны космоса

    Показания: нарушение обменных процессов, снижение иммунитета, обновление сил. Методика исполнения. Средний и сердечный пальцы правой руки кладут на аналогичные пальцы левой руки. Мизинец левой руки кладут возле основания тыльной поверхности среднего и безымянного пальцев правой руки, затем все фиксируется мизинцем правой руки. Кон...
    Читать далее »

    Заключение

    Лучше зажечь свечу, чем проклинать сгущающуюся тьму. Дзенское изречение Вот и написана книга. Мне хочется верить, что вам она обязательно поможет в познании себя, утверждении своего «Я», определении своего места во Вселенной. На ум приходит китайская пословица: «Если не менять направление, мы наверняка достигнем того, к чему идем». А мы идем к Свету, Добру и Счастью. Мы ...
    Читать далее »
    Металлочерепица
    Производство профнастила. Продажа металлочерепицы.
    mskrov.ru