使用条件删除Hibernate

时间:2014-06-07 22:28:22

标签: java hibernate java-ee

我可以使用Criteria删除表格中的记录吗?

例如,

Criteria toDelete = session.createCriteria(Car.class, "car").createAlias("car.wheel", "wheel");
toDelete.add(Restrictions.eq("brand", "Toyota"));
toDelete.add(Restrictions.eq("wheel.brand", "BBS");
toDelete.add(Restrictions.gt("date_of_purchase", someDay);
toDelete.add(Restrictions.between("cost", 3000, 5000);

如何使用删除标准删除我感兴趣的记录?一种低效的方法是使用toDelete标准查询id,然后从那里删除Car对象。 另外,我可以知道删除了多少个对象吗?

2 个答案:

答案 0 :(得分:2)

您应该将您的hibernate版本升级到实现JPA 2.1的版本(Hibernate在版本4.3.11上启动JPA 2.1.Final - Hibernate Downloads

升级后,您可以使用 CriteriaDelete 来执行您想要的操作。这是一个小例子:Example

答案 1 :(得分:1)

在我看来,你不能这样做,因为Hibernate不支持。 作为替代品,您可以使用以下内容:
    
String hql ="从User中删除UserName =:name&#34 ;;     
查询query = session.createQuery(hql);     
query.setString(" name"," User 9");     
int rowCount = query.executeUpdate();     
System.out.println("受影响的行:" + rowCount);

祝你好运, Hung NGUYEN