我有一个SQL查询
delete from response where r_id in (1,2,3,4) and u_id='10';
现在我想用hibernate执行这个queru。
我知道我可以通过createSQLQuery
执行此操作,但我必须使用标准。
我怎么能这样做?
感谢。
答案 0 :(得分:1)
如果必须在此处使用条件,则必须将所有对象提取到Java并使用Java机制删除它们。
这种方法在性能方面非常缓慢,但IFF你真的必须使用它:
List<Response> doomedResponses = createCriteria(Response.class).addRestriction(/* restrictions here*/).list();
for(Response doomed : doomedResponses) {
entityManager.remove(doomed);
}
答案 1 :(得分:1)
你需要添加两个限制,一个用于IN,这里是Restriction.in的
的java api(p> propertyName,Object []值中的静态标准) 对命名属性
应用“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'));