Hibernate FK для себя не для первичного ключа

У меня есть таблица со следующей структурой:

NUMBER RECORD_ID - PK
STRING NAME
STRING SOME_OTHER_BS
NUMBER ID - the person id i need to group the records by

Я сопоставил поля, подобные этому, в моей группе спящего режима:

long id;//RECORD_ID
String name;//NAME
String someOtherBS;//SOME_THER_BS
long personId;//ID

Теперь проблема в том, что мне нужно иметь набор элементов с тем же personId в сущности. Я пытался это сделать:

@ManyToOne(fetch= FetchType.LAZY, targetEntity = MyEntity.class)
@JoinColumns( {
    @JoinColumn(name="`ID`", referencedColumnName = "`ID`")
} )
private Set otherEntities;

Но это дает мне следующую ошибку:

org.hibernate.MappingException: повторный столбец при сопоставлении для объекта: com.sflpro.dto.MyEntity column: идентификатор (должен быть сопоставлен с insert = "false" update = "false")       at org.hibernate.mapping.PersistentClass.checkColumnDuplication (PersistentClass.java:681) ~ [hibernate-core-4.1.5.Final.jar: 4.1.5.Final]       at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication (PersistentClass.java:703) ~ [hibernate-core-4.1.5.Final.jar: 4.1.5.Final]       на org.hibernate.mapping.PersistentClass.checkColumnDuplication (PersistentClass.java:725) ~ [hibernate-core-4.1.5.Final.jar: 4.1.5.Final]       at org.hibernate.mapping.PersistentClass.validate (PersistentClass.java:478) ~ [hibernate-core-4.1.5.Final.jar: 4.1.5.Final]       на org.hibernate.mapping.RootClass.validate (RootClass.java:270) ~ [hibernate-core-4.1.5.Final.jar: 4.1.5.Final]       на org.hibernate.cfg.Configuration.validate (Configuration.java:1294) ~ [hibernate-core-4.1.5.Final.jar: 4.1.5.Final]       на org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:1736) ~ [hibernate-core-4.1.5.Final.jar: 4.1.5.Final]       на org.hibernate.ejb.EntityManagerFactoryImpl. (EntityManagerFactoryImpl.java:94) ~ [hibernate-entitymanager-4.1.5.Final.jar: 4.1.5.Final]       at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory (Ejb3Configuration.java:905) ~ [hibernate-entitymanager-4.1.5.Final.jar: 4.1.5.Final]       ... 74 общих кадра опущены

Итак, как я могу это сделать?

Постскриптум

Это устаревшая база данных, и изменение ее дизайна - бюрократическая стычка, поэтому я бы предпочел избежать этого.

1
nl ja de

1 ответы

Измените следующее:

@JoinColumn(name="ID", referencedColumnName="RECORD_ID")

Remember that your primary key is RECORD_ID and your foreign key is ID

1
добавлено
извините, но это не то, что я хочу сделать. Я не хочу, чтобы соединение работало над моим ПК, мне нужен список MyEntities с тем же идентификатором personId (ID), что и моя текущая запись.
добавлено автор Yervand Aghababyan, источник