EntityManager - может быть объявлено только одно выражение - PullRequest
0 голосов
/ 19 октября 2018

У меня есть запрос SQL.Когда я запускаю этот запрос на базе данных, я получаю возвращенные результаты.Но когда я помещу этот запрос в Java (EntityManager), у меня возникнет исключение:

В предложении SELECT подзапроса может быть объявлено только одно выражение.

Не могли бы вы написать мне, что не так?

SQL-запрос:

SELECT distinct d.pId
FROM Document d
WHERE d.date>= :date1 AND d.date< :date2 AND d.ro = :ro AND
      d.adressId IN (SELECT nvl(a.previd, a.id) id FROM Adress a where a.id= :aid)

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Попробуйте это

SELECT distinct d.pId 
   FROM Document d
   WHERE d.date >= :date1 AND d.date < :date2 AND d.ro = :ro AND
      d.adressId IN (SELECT nvl(a.previd, a.id) FROM Adress a where a.id = :aid)
0 голосов
/ 19 октября 2018

Ваш запрос возвращает только одну строку из подзапроса, поэтому, похоже, эта ошибка не возникнет.

Устраняет ли изменение запроса значение exists?

SELECT distinct d.pId
FROM Document d
WHERE d.date >= :date1 AND d.date < :date2 AND d.ro = :ro AND
      EXISTS (SELECT 1
              FROM Adress a
              WHERE a.id = :aid AND
                    (d.adressId = a.previd OR
                     (d.adressId = a.id AND a.previd IS NULL)
                    )
             );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...