0
返回行我想要做如下:子查询的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
但休眠抱怨,我想插入实体(表1)作为字符串(值)。它看起来像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不允许这样做。
是否有必要在Hibernate中做到这一点?即使你找到了方法,下次你需要重构它,你也面临类似的问题。 – ibre5041
这是必要的,因为我想使用不同的数据库引擎用于我的应用程序的不同部署。 – jaskmar