问题:
Java查询数据库,并根据查询到的数据进行修改,未调用update但是数据库数据发生了变化。
原因:
未知
解决办法
间接赋值修改,避免在查询到的数据上直接进行修改。
例子:
LinkedHashMap<Long,StudentItem> StudentItemLinkedHashMap = new LinkedHashMap<>();
// StudentItem studentItem = null;
StudentItem item = new StudentItem();
if (StudentItemLinkedHashMap.containsKey(studentCourse.getStudentItemId())) {
// studentItem = StudentItemLinkedHashMap.get(studentCourse.getStudentItemId());
StudentItem studentItem = StudentItemLinkedHashMap.get(studentCourse.getStudentItemId());
// studentItem.setReceivable 原本为:60
// 将studentItem属性值相同名称的属性复制到item实体类中
BeanUtils.copyProperties(studentItem, item);
} else {
// studentItem = charge
StudentItem studentItem = StudentItemService.selectStudentItemById(studentCourse.getStudentItemId());
BeanUtils.copyProperties(studentItem, item);
}
// 设置Receivable为:20
item.setReceivable(20);
// 如果直接 studentItem 进行赋值修改,会将数据库的数据进行改变,再次查询该条数据的Receivable数据就会是修改后的 20 而不是原本的 60 ,
// 但是我们并没有调用update进行修改
// studentItem.setReceivable(20);
Java查询数据库,并根据查询到的数据进行修改,未调用update但是数据库数据发生了变化
原文:https://www.cnblogs.com/lucky-jun/p/15237288.html