JPA无法在三元关系中合并ElementCollection的Embeddables

时间:2014-01-30 22:12:06

标签: java jpa eclipselink

我正在使用EclipseLink。我在三个实体之间有三元关系,称为Staff,Person和Job。我介绍了Embeddable类StaffItem,它只包含Person和Job。工作人员有一个StaffItems的ElementCollection。

我将新的StaffItems持久保存到数据库中没有问题,这些数据被添加到Staff Entity,但每当我更改一个项目或删除它并尝试合并现有的Staff Entity时,EntityManager似乎会遇到无限循环冲洗。我没有得到错误或异常,我只是不从flush()返回。

Staff.java

@Entity
public class Staff {

    private List<StaffItem> staffItems;

    @ElementCollection
    @CollectionTable(name = "staff_items", joinedColumns = @JoinedColumn(name = "staff"))
    public List<StaffItem> getStaffItems() { ... }

    // setter, etc.

}

StaffItem.java

@Embeddable
public class StaffItem {

    private Person person;

    private Job job;

    @ManyToOne
    @JoinColumn(name = "person", referencedColumn = "id")
    public Person getPerson() { ... }

    @ManyToOne
    @JoinColumn(name = "job", referencedColumn = "id")
    public Job getJob() { ... }

    // setter, etc.

}

0 个答案:

没有答案