Tap*_*ose 17 java session hibernate
在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;
}
});
}
Run Code Online (Sandbox Code Playgroud)
好吗?
Ade*_*ari 27
或者具有与现有持久状态相关联的标识符的瞬态实例
这意味着您可以直接传递entity给session.delete(),以删除该对象.此外,您无需检查实体是否存在.如果在数据库中找不到记录,则应该有例外.事实上,我们通常不会真正得到这种情况.我们总是删除一个现有的实体,我的意思是通常的逻辑就是这样; 所以,没必要那样做.你可以这样做,
SomeEntity ent = session.load(SomeEntity.class, '1234');
session.delete(ent);
Run Code Online (Sandbox Code Playgroud)
或者你可以这样做,
SomeEntity ent = new SomeEntity('1234'); // used constructor for brevity
session.delete(ent);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你也可以使用这个版本session.delete(String query),
sess.delete("from Employee e where e.id = '1234'"); // Just found it is deprecated
Run Code Online (Sandbox Code Playgroud)
小智 7
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class DeletePersistentObjectWithHibernate {
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
long id = 2;
try {
session.beginTransaction();
Employee employee = (Employee) session.get(Employee.class, id);
session.delete(employee);
session.getTransaction().commit();
}
catch (HibernateException e) {
e.printStackTrace();
session.getTransaction().rollback();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78075 次 |
| 最近记录: |