Java 为什么我必须使用@JoinColumn而不是@Column

Java 为什么我必须使用@JoinColumn而不是@Column,java,persistence,Java,Persistence,我正在尝试加入两个实体,在那里typDossAmo可以有一个DossMedic列表 但我得到了以下错误: 实体类[class ma.cnss.wstest.TypDossAmo]必须使用@JoinColumn而不是@Column来映射其关系属性[药物] public class TypDossAmo implements Serializable { private static final long serialVersionUID = 1L; @Column(name =

我正在尝试加入两个实体,在那里typDossAmo可以有一个DossMedic列表 但我得到了以下错误: 实体类[class ma.cnss.wstest.TypDossAmo]必须使用@JoinColumn而不是@Column来映射其关系属性[药物]

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;........

注释@Column的思想是用于与其他表没有任何关系的公共列,当您使用@JoinColumn时,就是对ORM说两个表有关系,连接它们的方法是使用此列。 在这种情况下,解决方案是通过TypDossAmo中的@JoinColumn更改注释@Column

public class TypDossAmo {

    @JoinColumn(name = "p_tab_medic")
    @OneToMany(mappedBy="doss")
    private List<DossMedic> drugs;
}
公共类typdosamo{
@JoinColumn(name=“p\u tab\u medic”)
@OneToMany(mappedBy=“doss”)
私人名单药物;
}

那么问题到底出在哪里呢?我认为解决方案可能是:公共类typdosamo{……@JoinColumn(name=“p_tab_medic”)@OneToMany(mappedBy=“doss”)私有列表药物;。。。。。。。。
public class TypDossAmo {

    @JoinColumn(name = "p_tab_medic")
    @OneToMany(mappedBy="doss")
    private List<DossMedic> drugs;
}