1. 程式人生 > 其它 >Java查詢資料庫,並根據查詢到的資料進行修改,未呼叫update但是資料庫資料發生了變化

Java查詢資料庫,並根據查詢到的資料進行修改,未呼叫update但是資料庫資料發生了變化

問題:

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