Java 如何将@OnetoMany与Embeddedid一起使用
我正在研究hibernate,并将映射与@OneToMany关系与复合键联系起来。 以下是我当前使用的实体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;
@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。可能的重复项