HQL批量使用内部查询删除

时间:2014-04-02 09:55:01

标签: hibernate hql

是否可以使用内部查询执行hibernate批量删除?例如:

DELETE Person person WHERE person.id IN (SELECT id FROM...)

1 个答案:

答案 0 :(得分:2)

是。有可能的。见以下几点。

Hibernate提供了通过Hibernate查询语言(HQL)执行的批量SQL样式DML语句执行的方法。

UPDATEDELETE语句的伪语法是:

( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)

需要注意的一些要点:

  
      
  1. 在from子句中,FROM关键字是可选的
  2.   
  3. 在from子句中只能有一个实体。但是,它可能是别名。如果实体名称是别名,则必须使用该别名限定任何属性引用。如果实体名称没有别名,那么任何属性引用都是合法的。
  4.   
  5. 可以在批量HQL查询中指定隐式或显式的连接。子查询可以在where子句中使用,子子查询本身可以包含连接。
  6.   
  7. where子句也是可选的。
  8.   

参考