0
私はテーブルの主キーのために自動生成されたid
フィールドを持っています。私は仕様でそれを保つ必要があります。ただし、論理キーは(firstName, lastName)
ペアです。エンティティ・クラス内のレコード挿入時のHibernateコンポジット論理キー
次のように、私はフィールドを定義:
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
// @NotNull
// @Column(nullable = false)
private String firstName;
private String lastName;
とオーバーライドequals()
とhashCode()
のみfirstName
とlastName
を使用。
すでにデータベースにある(firstName, lastName)
のレコードを保存しようとすると、保存されずにエラーがスローされるように設定します。現在 、
session.save(person);
は、彼らが来る限り多くの重複
(firstName, lastName)
ペアを保存しています。これはHibernateでどのように行われますか?
@Table([email protected](columnNames = {"firstName", "lastName"}))
達成していません。
dbカラム名は本当に 'firstName'と' lastName'ですか? 'first_name'と' last_name'ではなく? – veljkost
@veljkostはい。エンティティクラスのフィールド名は、dbフィールドとまったく同じスペルを持ちます。私は最初にHibernateにテーブルを作成させました。 –