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