首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 後端新增資料主鍵變為 0:變數賦值順序與物件復用錯誤

     編輯:程式設計綜合問答

常見錯誤代碼


CrumbCustomer lxr = new CrumbCustomer(); // 外層宣告
for (Customer c : list) {
    lxr.setId(c.getId()); // 覆寫同一物件
    lxr.setName(c.getName());
}
service.add(lxr); // 只新增最後一筆,且若 ID 為自增策略,可能被設為 0

修正

  1. 迴圈內 **new 新物件**:CrumbCustomer lxr = new CrumbCustomer(); 放在迴圈內。
  2. 確認實體類 ID 策略:@GeneratedValue(strategy = GenerationType.IDENTITY) 不需手動 setId。
  3. 批次新增用 saveAll(list) 或 JDBC batchUpdate。

正確範例


List toSave = new ArrayList<>();
for (Customer c : list) {
    CrumbCustomer entity = new CrumbCustomer();
    entity.setName(c.getName());
    // 不設 ID,交由資料庫自增
    toSave.add(entity);
}
crumbCustomerService.saveAll(toSave); // JPA 批次存儲
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved