我正在开发Spring JPA。作为其中的一部分,我必须更新一个忽略少数属性的实体。以下代码正在努力实现更新操作。
@Transactional
public void updateDMove(DTCRto jsonRto){
//copyProperties(Object source, Object target, String[] ignoreProperties)
DMove dMoveDB = dMoveRepo.findDMove(jsonRto.getLn(), jsonRto.getDriver(), jsonRto.getType());
DMove dMoveRto = jsonRto.convertToDMove(jsonRto);
BeanUtils.copyProperties(dMoveRto,drayMoveDB, new String[] {"moveId", "created","lastchange","locations","status"});
dMoveRepo.save(dMoveDB);
}
DMove:需要更新的模型类。 dMoveRepo:各自的存储库类。 dMoveRto:传入的对象。 dMoveDb:数据库中存在的对象。 moveId:是DMove类中的PK。
有人能建议我在Spring JPA中实现更新操作的方法是什么?
感谢。
答案 0 :(得分:0)
detached entity passed to persist
表示hibernate无法识别您传递给更新的实体,因为dMoveDB
不是persistent
对象,当您使用此行{{1 }}
我建议您删除BeanUtils.copyProperties(dMoveRto,drayMoveDB, new String[] {"moveId", "created","lastchange","locations","status"});
,以便您尝试更新的实体保留其原始主键并保留为moveId
对象。
最后一件事,您必须确保从persistent
获得的对象不是dMoveRepo.findDMove(...)