Java 如何将@OnetoMany与Embeddedid一起使用

Java 如何将@OnetoMany与Embeddedid一起使用,java,hibernate,Java,Hibernate,我正在研究hibernate,并将映射与@OneToMany关系与复合键联系起来。 以下是我当前使用的实体 @Embeddable @Getter @Setter public class AddressKey implements Serializable { private static final long serialVersionUID = -307823488229761699L; @Column(name = "id") private Long id;

我正在研究hibernate,并将映射与@OneToMany关系与复合键联系起来。 以下是我当前使用的实体

@Embeddable
@Getter
@Setter
public class AddressKey implements Serializable {

    private static final long serialVersionUID = -307823488229761699L;

    @Column(name = "id")
    private Long id;

    @Column(name = "city")
    private Long city;

    @Column(name = "locale")
    private String locale;

    @Column(name = "type")
    private String type;

    @ManyToOne
    @JoinColumn(name="id")
    private Person person;
}

@Entity
@Table(name = "address", schema = "test")
@Setter
@Getter
public class AddressHistory {

    @EmbeddedId
    private AddressKey key;

    @Column(name = "active")
    private boolean active;

    @Column(name = "current")
    private boolean current;

}


@Entity
@Table(name = "person", schema="test")
@ToString
public class Person {

    @Id
    @Column(name = "id")
    private Long id;

    @OneToMany(mappedBy="key.person", fetch=FetchType.EAGER, cascade=CascadeType.ALL)
    private Set<AddressHistory> addressHistory;
}
@可嵌入
@吸气剂
@塞特
公共类AddressKey实现可序列化{
私有静态最终长serialVersionUID=-307823482229761699L;
@列(name=“id”)
私人长id;
@列(name=“city”)
私人龙城;
@列(name=“locale”)
私有字符串区域设置;
@列(name=“type”)
私有字符串类型;
@许多酮
@JoinColumn(name=“id”)
私人;
}
@实体
@表(name=“address”,schema=“test”)
@塞特
@吸气剂
公共课历史{
@嵌入ID
私钥;
@列(name=“active”)
私有布尔活动;
@列(name=“current”)
私有布尔电流;
}
@实体
@表(name=“person”,schema=“test”)
@托斯特林
公共阶层人士{
@身份证
@列(name=“id”)
私人长id;
@OneToMany(mappedBy=“key.person”,fetch=FetchType.EAGER,cascade=CascadeType.ALL)
私人历史;
}
但当我试图运行这个程序时,它会给我以下错误

实体AddressHistory映射中的重复列

有人帮我修复这个映射中的错误。
提前感谢您重复了专栏文章。删除AddressKey中的@JoinColumn(name=“id”),因为您已经有一个同名的列,或者将其重命名为其他更易于维护的列,如person\u id。

可能的重复项