0
今朝からSOを検索していましたが、この質問に対する正しい答えが見つかりませんでした。私はIDを使用してレコードを更新していますアプリケーションを更新する代わりに、既存のレコードの新しいエントリを挿入する代わりに、コンソールは「更新」ではなく「挿入」を表示しています。Hibernate saveOrUpdateは既存のレコードを更新するのではなく、レコードを新しいエントリとして保存します
コントローラー:
@PostMapping("/saveCustomer")
public String saveCustomer(@ModelAttribute("customer") Customer customer) {
customerService.saveCustomer(customer);
return "redirect:/erp/list";
}
@GetMapping("/showFormForUpdate")
public String showFormForUpdate(@RequestParam("customerId") int id, Model model) {
Customer customer = customerService.getCustomer(id);
model.addAttribute("customer", customer);
return "customer-form";
}
DAOの実装:
@Override
public void saveCustomer(Customer customer) {
Session currentSession = sessionFactory.getCurrentSession();
currentSession.saveOrUpdate(customer);
}
エンティティ:
@Entity
@Table(name="customer")
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="company_name")
private String companyName;
@Column(name="company_email")
private String companyEmail;
@Column(name="company_address")
private String companyAddress;
@Column(name="contact_no")
private String contactNo;
@Column(name="company_tin")
private String companyTin;
public Customer() {
}
public String getContactNo() {
return contactNo;
}
public void setContactNo(String contactNo) {
this.contactNo = contactNo;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public String getCompanyEmail() {
return companyEmail;
}
public void setCompanyEmail(String companyEmail) {
this.companyEmail = companyEmail;
}
public String getCompanyAddress() {
return companyAddress;
}
public void setCompanyAddress(String companyAddress) {
this.companyAddress = companyAddress;
}
public String getCompanyTin() {
return companyTin;
}
public void setCompanyTin(String companyTin) {
this.companyTin = companyTin;
}
public int getId() {
return id;
}
エンティティが実際に存在していない場合は、この場合に「INSERT」が表示されます。 –