问题:
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);