2017-02-13 24 views
0

我爲表的主鍵自動生成id字段。我必須遵守規格。但是,邏輯密鑰是(firstName, lastName)對。記錄插入時的Hibernate複合邏輯密鑰

在實體類,我所定義的字段如下:

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
private long id; 

// @NotNull 
// @Column(nullable = false) 
private String firstName; 

private String lastName; 

,並且僅使用firstNamelastName推翻equals()hashCode()

我想設置它,以便當我嘗試保存已存在於數據庫中的(firstName, lastName)的記錄時,它不會保存但會拋出錯誤。 目前,

session.save(person); 

是節省重複(firstName, lastName)對儘可能多的,因爲他們來。這在Hibernate中如何完成?

@Table([email protected](columnNames = {"firstName", "lastName"})) 

沒有達到它。

+0

你的db列名真的是'firstName'和'lastName'嗎?不是'first_name'和'last_name'? – veljkost

+0

@veljkost是的。實體類字段名稱與db字段具有完全相同的拼寫。我最初讓Hibernate創建表。 –

回答

0

我加入

@Table([email protected](columnNames = {"firstName", "lastName"})) 

我創建表之後。

作品。