duplicatemappingexception在自引用层次实体的多个Map期间发生异常

1wnzp6jl  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(192)

我在用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
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题