hibernate设置assigned, new一个临时对象 是执行save还是update呢?

转眼 发布于 2016/09/14 11:55
阅读 498
收藏 0

hibernate设置assigned

new 一个临时对象设置id 为1 

数据库中有一个对象 id为1(没有通过get拿出)

此时 new出来的对象是 临时状态 还是持久化状态呢 ?

是执行save还是update呢?

加载中
0
skhuhu
skhuhu
 会报错 ··
转眼
转眼
回复:@skhuhu 没有状态的称为临时状态,那临时状态和游离状态有什么区别呢,区别不是就在于数据库中是否有标识符id?
转眼
转眼
回复:@skhuhu 但是我测试通过了,我的理解是new的这个对象如何标识符id,在数据库中有,执行update就相当于给他一个持久化状态,把他从游离状态变成持久状态
skhuhu
skhuhu
回复 @转眼 : 是否能执行save 和 update 不是看有没有id ···你也知道hibernate 几种状态,他的更新是根据状态来的 就是说你new 一个对象 给了id 是不能做update 的···因为什么 ? 没有状态··你得先从数据库查出来用这个查出来的实体做update···
转眼
转眼
我刚刚思考了下 执行save 会报错,update会把它视为游离状态来对待 ,进行更新和持久化 , 我总结出来的 是 临时状态 执行sava 不管有没有设置id都按照系统的max+1 , 临时状态执行 update 是如果没有设置id ,和数据库中没有id会报错 ,数据库中有id会发送sql语句 ; 持久状态 执行sava如果有id 会自动执行update; 不知道理解的是否正确?
返回顶部
顶部