日期:2014-05-19  浏览次数:20533 次

hibernate是如何知道已更新数据的
那种基于主键id的我知道。如果是一对多的,从多的list里删除一个元素,hibernate是如何知道删除的是哪个的呢?难道此时的list是hibernate自己定义的特殊List子类?
另外如果关联的一个元素里的某个字段修改了,他是如何知道是哪个元素发生变化了呢?

------解决方案--------------------
它当然不知道了,因为不管你改没改,它反正每个字段都会重新 SET 一遍
------解决方案--------------------
还真不知道hibernate是怎么处理的,你可以考虑下你遇到这个问题会怎么处理呢!
你可以去找找hibernate的源码看看
------解决方案--------------------
这可能是hibernate的三种状态的原因吧!
hibernate有三种状态,瞬时,持久,游离。
当你在事务中操作查询出了数据库中的数据,那么现在就是持久状态,集合中的数据和数据库中的数据是一一对应的!所以只要你对查出来的数据增删改查,改变了它,所以同样会影响到数据库中!