hibernate简单查询,连接不起作用

时间:2012-01-23 16:46:32

标签: hibernate

我正在尝试使用hibernate在我的数据库中删除一些BlRelation。

不幸的是,查询不起作用。你能帮帮我吗?我知道这应该很简单......

delete r FROM BlRelation where r.elementId.blProvider.providerId = 1

谢谢!

2 个答案:

答案 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)

来自reference manual

的引用
  

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)