问题描述
我正在尝试加入两个实体,其中 typDossAmo 可以拥有 DossMedic 列表 但我收到以下错误: 实体类[class ma.cnss.wstest.TypDossAmo] 必须使用@JoinColumn 而不是@Column 来映射其关系属性[drugs]。
public class TypDossAmo implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "ID")
private BigInteger id;
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1,max = 9)
@Column(name = "NUM_DOSS")
private String numDoss;
@Column(name = "p_tab_medic")
@OnetoMany(mappedBy="doss")
private List<DossMedic> drugs;........
public class DossMedic implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected DossMedicPK dossMedicPK;
@Column(name = "ID")
private BigInteger id;
@Column(name = "NOMBRE")
private BigInteger nombre;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="NUM_DOSS")
private TypDossAmo doss;
解决方法
注解@Column的思想是针对与其他表没有任何关系的公共列,当你使用@JoinColumn时就是对ORM说两个表有关系和加入他们的方式是用这个专栏。 在这种情况下,解决方案是在 TypDossAmo
中通过 @JoinColumn 更改注释 @Columnpublic class TypDossAmo {
@JoinColumn(name = "p_tab_medic")
@OneToMany(mappedBy="doss")
private List<DossMedic> drugs;
}