在Session类的JavaDoc中,delete方法的描述为:
从数据存储中删除 持久性实例 。该自变量可以是与接收会话相关联的实例,也可以是具有与现有持久状态相关联的标识符的瞬时实例。
我的问题是:
这是一个代码片段:
public void removeUnallocatedUserIfExits(final long itemId) { getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { session.flush(); session.setCacheMode(CacheMode.IGNORE); UnallocatedUser unallocatedUser; if ((unallocatedUser = (UnallocatedUser) session.get(UnallocatedUser.class, itemId)) != null) { session.delete(unallocatedUser); } session.flush(); return null; } }); }
可以吗
或具有与现有持久状态相关联的标识符的临时实例
这意味着您可以直接将传递entity给session.delete(),以删除该对象。此外,您无需检查该实体是否存在。如果在数据库中找不到记录,则应该有一个例外。实际上,我们通常不会真正遇到这种情况。我们总是删除一个现有的实体,我的意思是通常的逻辑就是这样。因此,无需这样做。您可以简单地做到这一点,
entity
session.delete()
SomeEntity ent = session.load(SomeEntity.class, '1234'); session.delete(ent);
或者您也可以这样做
SomeEntity ent = new SomeEntity('1234'); // used constructor for brevity session.delete(ent);
顺便说一句,您也可以使用此版本session.delete(String query),
session.delete(String query)
sess.delete("from Employee e where e.id = '1234'"); // Just found it is deprecated