Java查询数据库,并根据查询到的数据进行修改,未调用update但是数据库数据发生了变化


问题:

  Java查询数据库,并根据查询到的数据进行修改,未调用update但是数据库数据发生了变化。

原因:

  未知

解决办法

  间接赋值修改,避免在查询到的数据上直接进行修改。

例子:

LinkedHashMap 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);