我在使用 nativeid 时遇到问题,我不知道我是否做得对。
我有一个名为 Aircraft 的类,它有一个生成的 id。但它的本机 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 只更新当前的注册表。
我重写了方法 equals() 来测试 serialNumber 和 Model 属性,但它从未被调用。
我不知道如何让 Hibernate 理解具有 serialNumber 和模型的对象是 NativeId。
提前致谢!
亚历山大