2016-12-23 14 views
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; 
} 
+0

エンティティが実際に存在していない場合は、この場合に「INSERT」が表示されます。 –

答えて

0

私はあなたの豆にsetterメソッドが欠落していると思うここでアプリからの抜粋は以下のとおりです。

public int setId(int id) { 
    this.id = id; 
} 

です。そのため、モデル属性を追加するときに、Beanのid値が設定されていません。

関連する問題