Java查詢資料庫,並根據查詢到的資料進行修改,未呼叫update但是資料庫資料發生了變化
阿新 • • 發佈:2021-09-07
問題:
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);