我需要检查我的实际实体是否与旧实体不同。
我使用反射是因为我的方法必须标准化。
对于每一列,当且仅当它不为空时,我才更新值(因为我从 CSV 读取它并且可能未指定列)。
for(Field column : fields){
column.setAccessible(true);
Object newValue = column.get(myObject);
if( newValue != null && !newValue.equals(column.get(oldObject))){
column.set(oldObject, newValue);
}
}
this.entitymanager.merge(oldObject)
如果我进行这样的更改,则不会完成任何 UPDATE 查询。
如果我以正常方式更改值,oldobject.setValue(newValue)
则查询完成并更新记录。
如果我通过反射更改值,为什么实体管理器不执行 UPDATE 查询?