【发布时间】:2014-04-23 23:44:04
【问题描述】:
我正在使用 eclipselink 2.4.2。我必须执行一个使用 UNION 和 SELECT NEW 子句的查询。
我的 jpa 查询是这样的:
SELECT new com.*.*.MyObject(s.field1, s.field2, s.field3)
FROM MyEntityBean1 s WHERE s.someField = :someField UNION SELECT
new com.*.*.MyObject(s.field1, s.field2, s.field3)
FROM MyEntityBean2 s WHERE s.someField = :someField UNION SELECT ...
但是 eclipselink 在这个 sql 查询中对其进行了转换:
SELECT t0.COLUMN1, t0.COLUMN2, ... FROM
TABLE1 t1 WHERE (t1.COLUMN3 = ?)
UNION (SELECT FROM TABLE2 t2 WHERE (t2.COLUMN3 = ?)) UNION (...)
如您所见,第二个选择(和其他选择)为空,因此我收到此错误:
内部异常:java.sql.SQLSyntaxErrorException:ORA-00936: 缺少表达
如果不使用 SELECT NEW,我不会收到此错误,但我需要它,因为我在查询中使用的表(和 EntityBean)只有一些相等的字段。
谁能告诉我哪里出了问题或者是不是bug?
【问题讨论】:
标签: sql jpa eclipselink union