为什么我hibernate只写了save()方法 ,但是数据库不仅会insert 还会进行update()操作。

2025-06-26 01:30:47
推荐回答(2个)
回答1:

saveorupdate(); 这个方法是设置了主键 他就做修改 。 没有设置主键就做增加

save()也是因为你设置了主键才会做修改。为什么什么会做修改看你是什么状态

Hibernate主要有三种状态:

自由态(新建态):在数据库中是不会存在该对象的,当我们使用session.delete()方法可使对

                  象变为自由态

持久态(托管态):则数据是处于了持久的内存中的,数据库中有数据的,当我们改变处于持

                  久态的对象时,数据库中的也会改变可以变为持久态的方法是: 

                  get(),load(),save(),update(),saveOrUpdate(),merge(),(一级缓存)

游离态:数据库中有可能存在的数据,通过session的close(),clear(),evict(Object)三个方法可以

        将一个持久态的对象变为一个游离态的对象

回答2:

你应该使用saveorupdate();