• 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一个新的对象吧。

  • 相关阅读:
    Stupid Tower Defense
    Lifting the Stone
    城市地平线
    BestCoder Sequence
    Miaomiao's Geometry
    Rating
    Turn the pokers
    Peter's Hobby
    HTTP关键词收集
    HTTP出现前的协议
  • 原文地址:https://www.cnblogs.com/pzw23/p/14577401.html
Copyright © 2020-2023  润新知