Java 如何在hibernate中使用条件执行此sql查询?

Java 如何在hibernate中使用条件执行此sql查询?,java,hibernate,hsqldb,Java,Hibernate,Hsqldb,我有一个sql查询 delete from response where r_id in (1,2,3,4) and u_id='10'; 现在我想使用hibernate执行这个查询 我知道我可以通过createSQLQuery实现这一点,但我必须使用条件 我怎么能做到 谢谢。如果必须在此处使用条件,则必须将所有对象提取到Java并使用Java机制删除它们 这种方法在性能方面非常缓慢,但如果您真的必须使用它: List<Response> doomedResponses = cr

我有一个sql查询

delete from response where r_id in (1,2,3,4) and u_id='10';
现在我想使用hibernate执行这个查询

我知道我可以通过
createSQLQuery
实现这一点,但我必须使用条件

我怎么能做到


谢谢。

如果必须在此处使用条件,则必须将所有对象提取到Java并使用Java机制删除它们

这种方法在性能方面非常缓慢,但如果您真的必须使用它:

List<Response> doomedResponses =  createCriteria(Response.class).addRestriction(/* restrictions here*/).list();
for(Response doomed : doomedResponses) {

     entityManager.remove(doomed);
 }
List doomedResponses=createCriteria(Response.class).addRestriction(/*restrictions here*/).List();
for(响应失败:doomedResponses){
entityManager.remove(已失败);
}

您需要添加两个限制,一个用于IN,下面是用于Restriction.IN的java api

中的静态条件(字符串属性名称,对象[]值) 对命名属性应用“in”约束

所以你的代码应该是这样的

  Criteria criteria = session.createCriteria(Yourclass.class);
// create a collection for IN values comparision and lets assume it is called CollectionofValues
       criteria.add(Restrictions.in(r_id, collectionofValues);
      criteria.add(Restriction.eq(u_id,'10'));