EntityManager-只能声明一个表达式

时间:2018-10-19 10:43:12

标签: java sql oracle

我有一个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 :(得分:0)

您的查询仅从子查询返回一行,因此似乎不会产生该错误。

将查询更改为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)
                    )
             );

答案 1 :(得分:0)

尝试

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)