我正在尝试使用hibernate在我的数据库中删除一些BlRelation。
不幸的是,查询不起作用。你能帮帮我吗?我知道这应该很简单......
delete r FROM BlRelation where r.elementId.blProvider.providerId = 1
谢谢!
答案 0 :(得分:1)
请提供有关您的映射的更多详细信息,如果没有它,我只是猜测。但试试这个:
delete FROM BlRelation where elementId.blProvider.providerId = 1
elementId
字段BlProvider
也是element
类型的字段吗?我猜它名为delete FROM BlRelation where element.blProvider.providerId = 1
,所以应该是:
element
最后,如果BlProvider
与<{1>}在一对多或多对多关系中(它是收集类型) ),你需要一些更复杂的查询。
答案 1 :(得分:1)
UPDATE和DELETE语句的伪语法是:(UPDATE | 删除)来自? EntityName(WHERE where_conditions)?.
需要注意的一些要点:
- [...]
- 可以在批量HQL查询中指定隐式或显式的连接。子查询可以在where子句中使用,其中 子查询本身可能包含连接。
您可以使用子查询,或只是获取会话中的实体并使用session.delete()
删除它们。
这是一个可能有效的子查询:
delete from BlRelation r where r.id in
(select r2.id from BlRelation r2 where r2.elementId.blProvider.providerId = 1)