У меня есть класс, который должен иметь 2 объекта одного типа.Я использую Hibernate, который создает мою схему базы данных на основе моих классов.
Атрибуты:
private User user;
private User keyAccountManager;
Getter / Setter:
@ManyToOne
@JoinColumn(name = "userId")
@ForeignKey(name = "license_users_fk")
public User getUser() {
return user;
}
@ManyToOne
@JoinColumn(name = "userId")
@ForeignKey(name = "license_kam_fk")
public User getKeyAccountManager() {
return keyAccountManager;
}
Если я делаю это каквот, я получаю эту ошибку:
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: License column: userId (should be mapped with insert="false" update="false")
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:670)
at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:692)
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:714)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:468)
at org.hibernate.mapping.RootClass.validate(RootClass.java:215)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1135)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1320)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 55 more
Когда я изменяю его на @JoinColumn(name = "userId", insertable=false, updatable=false)
, он развертывается без проблем, столбец создается в базе данных, но когда я вызываю setKeyAccountManager (), значение неустановить в базе данных.
Как я могу иметь 2 объекта одного типа в этом классе?Спасибо!