我想做以下事情:
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不允许这样做。
答案 0 :(得分:0)
现在看起来第一个查询工作,也许是关于Hibernate版本。