powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / primary key read from the row during the execution of the query was detected to be null
13 сообщений из 13, страница 1 из 1
primary key read from the row during the execution of the query was detected to be null
    #37892398
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
Exception Description: The primary key read from the row [DatabaseRecord(
	INTOX.INTOX => null
	INTOX.ID => null
	INTOX.ID_SLUCH => null
	INTOX.ID_USL => null
	INTOX.ID_PAK => null)] during the execution of the query was detected to be null.  Primary keys must not contain null.
Query: ReportQuery(referenceClass=Schet sql="SELECT t0..[много_полей], t1..[много_полей], t2..[много_полей], t3.[много_полей] FROM SCHET t0 LEFT OUTER JOIN SLUCH t1 ON (t1.ID_PAK = t0.ID_PAK) LEFT OUTER JOIN USL t2 ON ((t2.ID_PAK = t1.ID_PAK) AND (t2.ID_SLUCH = t1.ID_SLUCH)) LEFT OUTER JOIN INTOX t3 ON ((t3.ID_PAK = t2.ID_PAK) AND ((t3.ID_USL = t2.ID_USL) AND (t3.ID_SLUCH = t2.ID_SLUCH))) LEFT OUTER JOIN EXPERT t4 ON ((t4.ID_PAK = t2.ID_PAK) AND ((t4.ID_USL = t2.ID_USL) AND (t4.ID_SLUCH = t2.ID_SLUCH)))")


Если выполнить этот запрос в SQL Developer, то всё нормально выполняется.
По идее должны сгенерироваться 4 сущности в результате этого запроса, а 4-ая сущность часто может быть пустой со всеми полями null. Вот он и валит исключение. А чего делать-то с этим? Как обойти проблему?
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37892401
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37892406
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ошибка не в SQL, а в ORM. Ваш outer джоин вернул для некоторых алиасов NULL значения. ORM обрыгался создать их них сущности.
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37892410
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гуглить надо было так
https://www.google.com/search?q="Primary+keys+must+not+contain+null"
сразу на EclipseLink выведет
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37892513
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин! Ничего не помогает.
Пробовал и сущность менять - всякие if(поле==null) в set*методы вставлял. И делал их Long вместо long. И свойства какие-то непонятные в persistence.xml записывал типа:
<property name="eclipselink.jpa.uppercase-column-names" value="true"/>
И Eclipse-Link 2.0 подключал.
Ничего не помогает.
А вообще left join сам по себе подразумевает, что объект может быть null. А как тогда вообще left join сделать-то?
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37892515
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сразу на EclipseLink выведет
Понятно, что EclipseLink. А чего делать-то?
Если по-Google-ить, то все только спрашивают как решить эту проблему, а решения нету.
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37892533
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37892547
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
https://bugs.eclipse.org/bugs/show_bug.cgi?id=382950 Fixed in EclipseLink main trunk (2.5.0) with r11698.
То есть типа это BUG и он устранён в версии 2.5.0.
Попробуем скачать...
http://www.eclipse.org/downloads/download.php?file=/rt/eclipselink/nightly/2.5.0/20120714/eclipselink-2.5.0.v20120714-r11856.zip

r11856 по идее должен подойти.
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37893373
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Библиотеку обновил (eclipselink-2.5.0.v20120714-r11856), но всё равно не работает вот такой код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
            try {
                CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
                CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
                Root<Schet> schet = criteriaQuery.from(Schet.class);
                Join sluch = schet.join("sluchCollection", JoinType.LEFT);
                Join usl = sluch.join("uslCollection", JoinType.LEFT);
                Join intox = usl.join("intoxCollection", JoinType.LEFT);
                Join expert = usl.join("expertCollection", JoinType.LEFT);
                CriteriaQuery<Object> select = criteriaQuery.multiselect(schet, sluch, usl, intox);

                TypedQuery<Object> typedQuery = em.createQuery(select);
                Object some_ret = typedQuery.getResultList();

                String gg = "";

            } catch (Exception e) {
                String er = e.getMessage();
                String gh = "";
            }


Валится та же самая ошибка!
А по идее этот код должен работать и выдавать результат, такой же, что и код ниже.

А вот так работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            try {
                String query_string = "SELECT schet,sluch,usl,intox FROM Schet schet"
                        + " LEFT OUTER JOIN schet.sluchCollection sluch"
                        + " LEFT OUTER JOIN sluch.uslCollection usl"
                        + " LEFT OUTER JOIN usl.intoxCollection intox";
                Query q = em.createQuery(query_string);
                List<Object[]> resList = q.getResultList();
                String gg = "";
            } catch (Exception e) {
                String er = e.getMessage();
                String gh = "";
            }


Короче, хрень какая-то...
Вообще очень странно, что по-нормальному не работает LEFT JOIN. Это же очень частая операция.
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37893428
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hibernate наше всё.
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37893464
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А с Hibernate LEFT JOIN с CriteriaBuilder нормально работает?
Он своими библиотеками реализует javax.persistence.EntityManager?
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37893472
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000А с Hibernate LEFT JOIN с CriteriaBuilder нормально работает?
У вас проблема не в CriteriaBuilder.

Niky4000Он своими библиотеками реализует javax.persistence.EntityManager?
Ну, естественно. JPA был слизан с хибера и хибер всегда был первым провайдером.
...
Рейтинг: 0 / 0
primary key read from the row during the execution of the query was detected to be null
    #37893493
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У вас проблема не в CriteriaBuilder.
Ну, да, видимо, проблема с библиотекой, которая это реализует, а точнее с eclipse-link.
Попробую скачаю свежую версию hibernate и поподключаю к какому-нибудь ejb-модулю.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / primary key read from the row during the execution of the query was detected to be null
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]