私はネイティブ ID に問題があり、正しく行っているかどうかわかりません。
生成された ID を持つ Aircraft というクラスがあります。ただし、そのネイティブ ID は、以下のようにシリアル番号 (整数) とモデル (カスタム クラス) です。
public class Aircraft{
@Id @GeneratedValue(strategy=GenerationType.AUTO,generator="COD_NS_AENV")
@Column(name="COD_NS")
private Integer id;
@Column(name="NUM_IDENT_NS_AENV")
@NaturalId
private Integer serialNumber;
@ManyToOne
@NaturalId
private Model model;
.
.
.
}
このクラスを XML からロードし、次のようにデータベースに保存します。
.
.
.
Aircraft aircraft= (Aircraft)xstream.fromXML(reader);
Session session = HibernateUtil.openSession();
Transaction t = session.beginTransaction();
session.saveOrUpdate(aircraft.getModelo());
session.saveOrUpdate(aircraft);
t.commit();
session.close();
挿入には問題なく機能しますが、私の問題は、このコードを同じ情報で再度実行すると、Hibernate が別の航空機を挿入することです。Hibernate が現在のレジストリのみを更新することを望みます。
serialNumber 属性と Model 属性をテストするために equals() メソッドをオーバーライドしましたが、呼び出されません。
serialNumber と model を持つオブジェクトが NativeId であることを Hibernate に理解させる方法がわかりません。
前もって感謝します!
アレクサンドル