甲骨文执行查询时,我创建了一个namedquery如下:奇怪的行为与EclipseLink的
SELECT o
FROM TableName1Entity o , TableName2Entity a
WHERE o.field1 = a.field4
AND a.field5 = :param1
即转换为SQL语句:
SELECT TABLE_NAME1.FIELD1, TABLE_NAME1.FIELD2, TABLE_NAME1.FIELD3
FROM TABLE_NAME2 t0, TABLE_NAME1 t1
WHERE ((t0.FIELD4 = t1.FIELD1)
AND (t0.FIELD5 = ?));
,并返回ORA-00904: "TABLE_NAME1"."FIELD3": invalid identifier
但它工作时,我手动修改如下:(他们都按预期工作)
SELECT t1.FIELD1, t1.FIELD2, t1.FIELD3
FROM TABLE_NAME2 t0, TABLE_NAME1 t1
WHERE ((t0.FIELD4 = t1.FIELD1)
AND (t0.FIELD5 = ?));
SELECT TABLE_NAME1.FIELD1, TABLE_NAME1.FIELD2, TABLE_NAME1.FIELD3
FROM TABLE_NAME2 t0, TABLE_NAME1
WHERE ((t0.FIELD4 = TABLE_NAME1.FIELD1)
AND (t0.FIELD5 = ?));
SELECT FIELD1, FIELD2, FIELD3
FROM TABLE_NAME2 t0, TABLE_NAME1 t1
WHERE ((t0.FIELD4 = t1.FIELD1) AND (t0.FIELD5 = ?));
SELECT FIELD1, FIELD2, FIELD3
FROM TABLE_NAME2 t0, TABLE_NAME1
WHERE ((t0.FIELD4 = TABLE_NAME1.FIELD1)
AND (t0.FIELD5 = ?));
PS:出于安全原因,我不能给表或字段名称。
事情是:当表名被明确设置以及标签给它时,查询不起作用。
请不要改变命名查询 给替代解决方案,因为它应该是罚款,是和更改命名查询是不是 选项。除非它真的有错误。
你没有表现出命名查询;一个已命名的查询属于ORM的世界,并且不是写入SQL(对于该表具有这种别名“标签”的SQL)。看看[什么是命名查询](http://stackoverflow.com/questions/4517069/what-is-a-named-query) – 2012-07-10 13:43:41
和JPA的实现是?因为将JPQL查询转换为SQL与实现 – DataNucleus 2012-07-10 15:07:50
JPA 1.0.2与EclipseLink 1.1.1 – w35l3y 2012-07-10 16:42:11