identifier of an instance ofwas altered from to null

    技术2024-12-27  15

    Hibernate的提示错误 Caused by: org.hibernate.HibernateException: identifier of an instance of ... is alterde from 150 to null

    原代码如下:

    List<RoItem> itemList = roItemDao.findByRo(ro); PoItem poItem = new PoItem(); for (RoItem item : itemList) { ppItemDao.insert(poItem); ppItemDao.reOrder("po", poItem.getPo()); poItem = ppItemDao.getByPK(poItem.getPoItemId()); }

    这个错误是由于在一个事务中更新了主键,而主键是不能被更新的. 这段代码的错误在PoItem poItem=new PoItem(); 这句代码放在for循环的外面,因此每次循环插入的时候,Hibernate认为只是一个对象,主键被更新,因此报错,如果放在for循环里面,就正常了,每次插入都是一个新的对象. 正确的代码如下:

    List<RoItem> itemList = roItemDao.findByRo(ro); for (RoItem item : itemList) { PoItem poItem = new PoItem(); .... }

    最新回复(0)