问题:我是在遇到此问题才会手动关闭session的 :查询数据后修改查询出来的实体对象 但是发现数据库也修改了该对象
hibernate在每个session里都会做些处理,比如把查询过的对象缓存起来什么,这个时候这些对象的实例是和数据库保持关联的,hibernate会记录session生命周期内所有缓存对象的操作过程,最后都会反映到数据库去,也就是所谓的托管状态,所以才会有自动更新这种问题
解决:
在Service层 注入 EntityManager
在要关闭session的地方 加上 entityManager.clear(); (其实也就是进入游离状态)