我有一张包含以下结构的表格:
NUMBER RECORD_ID - PK
STRING NAME
STRING SOME_OTHER_BS
NUMBER ID - the person id i need to group the records by
我已经在我的hibernate实体中映射了这样的字段:
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] 在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] 在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] 在org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)〜[hibernate-entitymanager-4.1.5.Final.jar:4.1.5.Final] ...省略了74个常见帧
那我怎么能做到这一点?
P.S。
这是一个遗留数据库,改变它的设计是一种官僚主义的麻烦,所以我宁愿避免这种情况。
答案 0 :(得分:1)
更改以下内容:
@JoinColumn(name="ID", referencedColumnName="RECORD_ID")
请记住,您的主键是RECORD_ID
,外键是ID