gpt4 book ai didi

java - HQL,我可以参数化 FROM 子句吗?

转载 作者:行者123 更新时间:2023-12-01 12:48:42 25 4
gpt4 key购买 nike

我有这个 HQL 查询:

        Query q = em.createQuery (
"DELETE FROM Annotation a WHERE a.id IN ( " +
" SELECT ja.id FROM :entityName an JOIN an.annotations ja)"
);

我被告知:QuerySyntaxException: 意外的标记: : 靠近第 1 行我是否希望将实体名称放在 FROM 参数之后?我有一个要发送到此查询的实体列表,我担心字符串连接太慢。

最佳答案

您不能替换实体名称,参数适用于实体属性。

您可以使用一个查询选择要删除的实体 ID,然后将它们传递给第二个删除查询,但对于 READ_COMMITED 事务隔离,您最终可能仍然会看到其他人插入一个与您的查询匹配的子实体。 SERIALIZABLE 将解决这个问题。

关于java - HQL,我可以参数化 FROM 子句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24427827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com