我想在HQL中执行INSERT INTO ... SELECT,其中select是DISTINCT:
INSERT INTO TAB1 (COL1, COL2)
SELECT DISTINCT :const, A.SHORTID
FROM TAB2 P, TAB3 A
WHERE P.LASTTIME > :lastTime
AND P.NAME LIKE A.LONGID || '%'
在参数中替换它可以用作Oracle SQL,但是在这种情况下,Hibernate(5.2.4)似乎不喜欢DISTINCT。它抱怨org.hibernate.hql.internal.ast.QuerySyntaxException有一个
unexpected AST node: DISTINCT near line 1, column ..
在这种情况下,我可以使用GROUP BY A.SHORTID,但是Hibernate不支持INSIST INTO中的DISTINCT ... SELECT ..还是我的HQL语法与DISTINCT错了?谢谢。
编辑:在这种特殊情况下,我不能使用GROUP BY,因为从序列生成了一个Id列(Hibernate将额外的列和值添加到插入,但是it appears Oracle does not allow selecting from a sequence together with GROUP BY or ORDER BY)。