我知道以下代码将从数据库中删除id = 5的记录:
Query query = session.createQuery("delete from Class where id = 5");
query.executeUpdate();
但在删除之前,需要将此记录的数据保存在变量中。 所以我想选择id = 5,在一些代码之后,我删除它。 如果我对它们使用两个不同的查询,则效率不高。因为这样我们搜索该项目的数据库两次。
query = session.createQuery("from Class where id = 5");
//somecode
query = session.createQuery("delete Class where id = 5");
...
所以我需要一种更有效的方法来做到这一点,并做得更好。
答案 0 :(得分:4)
无需创建查询来删除记录。
query = session.createQuery("from Class where id = 5");
List list=query.list();
if(list.size()!=0)
{
ClassName obj = (ClassName)list.get(0);
session.delete(obj);
}
答案 1 :(得分:3)
Hibernate有一个Session.delete()
方法。如果您已经有要删除的实体的引用,请使用它。无需查询。
这也适用于在关联上配置的潜在级联,删除查询不会。