2015-11-03 105 views
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不允許這樣做。

+0

是否有必要在Hibernate中做到這一點?即使你找到了方法,下次你需要重構它,你也面臨類似的問題。 – ibre5041

+0

這是必要的,因爲我想使用不同的數據庫引擎用於我的應用程序的不同部署。 – jaskmar

回答

0

它看起來像第一個查詢現在工作,也許它是關於休眠版本。