org.hibernate.HibernateException: identifier of an instance of xxxx.models.Rkdj was altered from 1075 to 0

错误的原因是在一个事务中,主键是不能修改的。

1、因为业务需求,我需要在一个事务中新增Rkdj这个对象的几条数据,因为考虑到部分字段数据一样,所以在for循环外面Rkdj it = new Rkdj();,在for循环外面设置好相同的数据的字段,在for循环里面设置不同数据的字段,然后保存,最后发现数据库里面只是新增了一条数据,于是打印日志,发现第一次循环的时候id为0,保存的时候,id自增长策略使得id有了具体的值,后面id都是不变的,于是后面的循环都变成了修改,导致数据库只有一条数据。

2、基于上面的发现,我在想,如果在for循环里面把id设为0然后再保存,可不可行呢?结果就报了标题的错误,在一个事务中,主键是不能修改的!还是老老实实在for循环里面每次都new一个新的对象吧。

原文地址:https://www.cnblogs.com/pzw23/p/14577401.html