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 列:在 org.hibernate.mapping.PersistentClass.checkColumnDuplication(应该使用 insert="false" update="false" 映射) 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]在 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] 在 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个常用帧

那么我怎样才能做到这一点呢?

附言

这是一个遗留数据库,改变它的设计是一个官僚主义的麻烦,所以我宁愿避免这种情况。

4

1 回答 1

1

更改以下内容:

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

请记住,您的主键是RECORD_ID,外键是ID

于 2012-12-29T17:09:49.243 回答