如何从对象复制属性?

时间:2016-11-25 01:57:48

标签: spring hibernate spring-boot

当我尝试将所有属性和集合从编队对象复制到另一个编队对象并用另一个id保存时,我得到关于id的这个例外。我该如何解决?

org.hibernate.HibernateException: identifier of an instance of entity.Formation was altered from 2 to null
at org.hibernate.event.internal.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:80)

我的代码可以在f中复制此格式:

BeanUtils.copyProperties(f, formation);
return addFormation(f);

1 个答案:

答案 0 :(得分:0)

我在调用 BeanUtils.copyProperties 之前操作原始对象时遇到了同样的问题,我通过首先调用 BeanUtils.copyProperties 然后操作新对象的字段来修复它

    Transaction tx = session.beginTransaction();
    Unit unitRecord = (Unit) session.get(Unit.class, 1076L);
    Unit newObject = new Unit();
    
    //////////WORK//////
    BeanUtils.copyProperties(unitRecord, newObject );
    newObject.setId(1077L);
    ////////////
    
    /////////////NOT WORK/////
    unitRecord.setId(1077L);
    BeanUtils.copyProperties(unitRecord, newObject );
    /////////////
    
    newObject.setName("TESTONLY TESTSTST");
    session.save(newObject);
    tx.commit();