我在用jpa做一个springboot项目。我有一个表,它的实体是分层的和自引用的。我想Map实体,以便生成的对象将具有其父对象和子对象的数据。
假设我的实体是 Person
. 为了防止在对象内部形成递归链(父对象、父对象内部的父对象、父对象内部的父对象。。。我提供了另一个名为 SummaryPerson
Map同一个表,只保存一些没有父级或子级信息的元数据。
实体类和表结构如下所示。
通过使用这个解决方案和下面给定的类定义,我成功地Map了子列表。不Map父对象并将其保留为 parentId
(只有很长的数字),应用程序运行良好。但在Map父级和子级时,我在启动过程中遇到以下错误:
org.hibernate.DuplicateMappingException: Table [person] contains physical column name [sponsor_id] referred to by multiple logical column names: [parent_id], [parentId]
我不明白为什么会出现这个错误,也不知道如何修复它。如果有人能帮我,我会很高兴的。
人:
id-int(11)主键
父\u id-int(11)(同一表的外键)
姓名-varchar(50)
姓氏-varchar(50)
电子邮件-varchar(50)
电话-varchar(50)
插入日期-日期时间
其他\u字段\u 1
其他\u字段\u 2
...
@Entity
@Table(name="person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String surname;
private String email;
private String phone;
@CreationTimestamp
private Date insertDate;
// private Long parentId;
@ManyToOne
private SummaryPerson parent;
@OneToMany(mappedBy = "parentId")
private List<SummaryPerson> children;
// other fields, fields for other details
// getters & setters
}
@Entity
@Table(name="person")
public class SummaryPerson {
@Id
private Long id;
private String name;
private String surname;
private Long parentId;
// that's it, no other fields
// getters & setters
}
暂无答案!
目前还没有任何答案,快来回答吧!