子查询在HQL中返回行

时间:2015-11-03 10:11:17

标签: oracle hibernate orm hql

我想做以下事情:

INSERT INTO Table0(value1, value2) 
SELECT 
    (SELECT t1.something1 FROM Table1 t1 WHERE t1.id = :t1id),
    (SELECT max(t2.something2) FROM Table2 t2 WHERE t2.some = :t2Some)
FROM Table1, Table2

但是hibernate抱怨我想将实体(Table1)作为字符串(value1)插入。看起来HQL中的子查询返回实体而不是列值。我可以强迫它不要这样做吗?

我知道,我可以这样做:

INSERT INTO Table0(value1, value2)
SELECT t1.something1, max(t2.something2) FROM Table1 t1, Table2 t2 WHERE ...

但它会为Oracle生成错误的SQL,因为SELECT中有HIBERNATE_SEQUENCE.NEXTVAL而Oracle不允许这样做。

1 个答案:

答案 0 :(得分:0)

现在看起来第一个查询工作,也许是关于Hibernate版本。