1

次の構造のテーブルがあります。

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<MyEntity> otherEntities;

しかし、これにより次のエラーが発生します。

org.hibernate.MappingException: エンティティのマッピングで繰り返される列: com.sflpro.dto.MyEntity 列: ID (insert="false" update="false" でマップする必要があります) 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] at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:725) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] 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] at org.hibernate.cfg.Configuration.validate(Configuration.java:1294) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] at org.hibernate.cfg.Configuration.buildSessionFactory( Configuration.java:1736) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] at 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 個の共通フレームを省略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 個の共通フレームを省略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 個の共通フレームを省略

では、どうすればこれを達成できますか?

PS

これはレガシーデータベースであり、その設計を変更することは官僚的な面倒なので、私はそれを避けたい.

4

1 に答える 1

1

以下を変更します。

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

主キーはRECORD_IDであり、外部キーは であることに注意してくださいID

于 2012-12-29T17:09:49.243 に答える