使用JPA查询数据,对查询出来的结果进行修改,可是不保存数据库,最终数据库却作了一样的修改。数据库
解决方案:须要对修改的值从新复制到另外一个对象中在进行修改。缓存
缘由:session
JPA有如上所示的四个生命周期:.net
New:瞬时对象,还没有有id,还未和Persistence Context创建关联的对象。
Managed:持久化受管对象,有id值,已经和Persistence Context创建了关联的对象。
Datached:游离态离线对象,有id值,但没有和Persistence Context创建关联的对象。
Removed:删除的对象,有id值,尚且和Persistence Context有关联,可是已经准备好从数据库中删除
当从数据库获取的数据后,由于有事务管理,因此数据已与session关联,而且数据库有数据,已经持久化了,而且在数据库的缓存当中了,当咱们对查询出来的数据进行修改时,缓存缓存Session中的数据发生改变,那么接着数据库也会跟着进行相应的改变。因此就自动执行了update的更新操做。对象
————————————————
版权声明:本文为CSDN博主「小甜宝」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。
原文连接:https://blog.csdn.net/nanxuan1030/article/details/82986270blog