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

hibernate简单查询,连接不起作用,hibernate,Hibernate,我正在尝试使用hibernate删除数据库中的一些BlRelation 不幸的是,查询不起作用。你能帮我一下吗?我知道这应该很简单 delete r FROM BlRelation where r.elementId.blProvider.providerId = 1 谢谢 请提供有关映射的更多详细信息,如果没有它,我只能猜测。但是试试这个: delete FROM BlRelation where elementId.blProvider.providerId = 1 elementId是

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

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

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

谢谢

请提供有关映射的更多详细信息,如果没有它,我只能猜测。但是试试这个:

delete FROM BlRelation where elementId.blProvider.providerId = 1
elementId
是否也是
BlProvider
类型的字段?我猜它被命名为
元素
,所以它应该是:

delete FROM BlRelation where element.blProvider.providerId = 1
最后,如果
元素
BlProvider
存在一对多或多对多关系(它属于集合类型),则需要一些更复杂的查询。

引用:

UPDATE和DELETE语句的伪语法是:(UPDATE| 删除)从?EntityName(WHERE\u条件)

需要注意的几点:

  • [……]
  • 在批量HQL查询中不能指定隐式或显式联接。子查询可以在where子句中使用,其中 子查询本身可能包含联接
您可以只使用子查询,也可以只获取会话中的实体,然后使用
session.delete()
删除它们

下面是一个可能会起作用的子查询:

delete from BlRelation r where r.id in 
  (select r2.id from BlRelation r2 where r2.elementId.blProvider.providerId = 1)

请参见Hi-Tomasz,elementId是包含BlProvider对象的元素对象