常見錯誤代碼
CrumbCustomer lxr = new CrumbCustomer(); // 外層宣告
for (Customer c : list) {
lxr.setId(c.getId()); // 覆寫同一物件
lxr.setName(c.getName());
}
service.add(lxr); // 只新增最後一筆,且若 ID 為自增策略,可能被設為 0
修正
- 迴圈內 **new 新物件**:
CrumbCustomer lxr = new CrumbCustomer(); 放在迴圈內。
- 確認實體類 ID 策略:
@GeneratedValue(strategy = GenerationType.IDENTITY) 不需手動 setId。
- 批次新增用
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 批次存儲