У меня проблема с nativeid, и я не знаю, правильно ли я поступаю.
У меня есть класс Aircraft, у которого есть сгенерированный идентификатор. Но его собственным идентификатором является серийный номер (целое число) и модель (пользовательский класс), как показано ниже:
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.
Заранее спасибо!
Александр