HQL 中的子查询返回行
subquery returning row in 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 returns 实体中的子查询而不是列值。我可以强制它不这样做吗?
我知道,我可以这样做:
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 版本的问题。
我想做以下事情:
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 returns 实体中的子查询而不是列值。我可以强制它不这样做吗?
我知道,我可以这样做:
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 版本的问题。