Java 使用另一个表的两列引用表中的行

Java 使用另一个表的两列引用表中的行,java,hibernate,orm,Java,Hibernate,Orm,我正在尝试创建一个关系,如图所示。玩具箱里会有多个玩具——每个玩具要么是圣诞玩具,要么是新年玩具。我想把圣诞玩具清单给一个盒子,或者把新年玩具清单给一个盒子。此外,我想能够得到特定的玩具盒(圣诞玩具或新年玩具)。因此,我创建了如图所示的关系。我得到一个错误的说法 无法构建Hibernate SessionFactory;嵌套异常为org.hibernate.MappingException:实体映射中的重复列:com.sample.play.entities.Toy列:box\u id(应使用i

我正在尝试创建一个关系,如图所示。玩具箱里会有多个玩具——每个玩具要么是圣诞玩具,要么是新年玩具。我想把圣诞玩具清单给一个盒子,或者把新年玩具清单给一个盒子。此外,我想能够得到特定的玩具盒(圣诞玩具或新年玩具)。因此,我创建了如图所示的关系。我得到一个错误的说法

无法构建Hibernate SessionFactory;嵌套异常为org.hibernate.MappingException:实体映射中的重复列:com.sample.play.entities.Toy列:box\u id(应使用insert=“false”update=“false”进行映射)

我不明白我为什么会犯这个错误,你能帮我解决这个问题吗?我做错什么了吗

基本上,我希望能够使用
private-ToyBox-christmasBox创建一行ToyBox和一行使用
私有ToyBox newYearBox它可能是同一个玩具箱

public class Toy {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "toy_id")
    private Long toyid;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "boxId", referencedColumnName = "boxId")
    @JsonBackReference
    private ToyBox christmasBox;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "boxId", referencedColumnName = "boxId")
    @JsonBackReference
    private ToyBox newYearBox;
}

public class ToyBox {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "boxId")
    private Long boxId;

    @JsonManagedReference
    @OneToMany(mappedBy = "christmasBox", fetch = FetchType.EAGER)
    @Fetch(value = FetchMode.SUBSELECT)
    @DiffIgnore
    private List<Toy> christmasToys = new ArrayList<>();

    @JsonManagedReference
    @OneToMany(mappedBy = "newYearBox", fetch = FetchType.EAGER)
    @Fetch(value = FetchMode.SUBSELECT)
    @DiffIgnore
    private List<Toy> newYear = new ArrayList<>();
}
公共类玩具{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“toy_id”)
私人长托伊德;
@manytone(fetch=FetchType.EAGER)
@JoinColumn(name=“boxId”,referencedColumnName=“boxId”)
@JsonBackReference
私人玩具箱圣诞箱;
@manytone(fetch=FetchType.EAGER)
@JoinColumn(name=“boxId”,referencedColumnName=“boxId”)
@JsonBackReference
私人玩具箱新年箱;
}
公共类玩具箱{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“boxId”)
私有长boxId;
@JsonManagedReference
@OneToMany(mappedBy=“christmasBox”,fetch=FetchType.EAGER)
@Fetch(值=FetchMode.SUBSELECT)
@扩散忽略
private List christmasToys=new ArrayList();
@JsonManagedReference
@OneToMany(mappedBy=“newYearBox”,fetch=FetchType.EAGER)
@Fetch(值=FetchMode.SUBSELECT)
@扩散忽略
private List newYear=new ArrayList();
}