Hibernate delete 问题
我试着写了一个Hibernatedelete操作,但没有从数据库删除,出现如下提示具体代码是传入的U1和U2应该是正确的,不知道是为什么代码里还有个add的操作函数却是成...
我试着写了一个Hibernate delete操作,但没有从数据库删除,出现如下提示
具体代码是
传入的U1和U2应该是正确的,不知道是为什么
代码里还有个add的操作函数却是成功的
求解释 展开
具体代码是
传入的U1和U2应该是正确的,不知道是为什么
代码里还有个add的操作函数却是成功的
求解释 展开
2个回答
展开全部
delete需要的是一个持久态对象,你传入的是一个瞬态对象,当然没有效果。
什么是持久态对象,你从数据库get到的,你save后的,建议找本教程,或者百度一下,总之你刚new的对象肯定是瞬态对象。
多解释一下,hibernate对象的三种状态,
一。瞬态:刚new出来的对象,特点是无持久化标志,无session关联。
二。持久态:瞬态save后变为持久态,特点是有持久化标志,有session关联。对持久态对象的改变会在提交时同步到数据库。
三。托管态。持久态关联的session关闭后,对象变为托管态。特点有持久化标志,没有关联的session。对托管态的改变不会同步到数据库,除非update他。
更多信息请找本教程仔细学习。
什么是持久态对象,你从数据库get到的,你save后的,建议找本教程,或者百度一下,总之你刚new的对象肯定是瞬态对象。
多解释一下,hibernate对象的三种状态,
一。瞬态:刚new出来的对象,特点是无持久化标志,无session关联。
二。持久态:瞬态save后变为持久态,特点是有持久化标志,有session关联。对持久态对象的改变会在提交时同步到数据库。
三。托管态。持久态关联的session关闭后,对象变为托管态。特点有持久化标志,没有关联的session。对托管态的改变不会同步到数据库,除非update他。
更多信息请找本教程仔细学习。
追问
嗯~有道理,那要delete怎么取不是瞬态的对象呢?
追答
第一:
public void save(User user) {
//传入的是瞬态。
session.save(user);
//此时user是持久态
//但是保存后,立即删除是没什么意义
}
第二:
public void delete(String username) {
List list = session.createQuery("from User where username = ?").setParameter(0, username).list();
for(User user:list) {
用session从数据库查询出的对象都是持久态。
session.delete(user);
}
}
关于学习方法,要自己学习,但不能完全自己从零学起,找本PDF教程学习或者网上找个视频学习一下基础概念才行啊。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询