一对一进行JPA时引用的属性未知

时间:2019-02-21 15:13:33

标签: java sql spring hibernate jpa

我有这两个实体,在这里我想在进行JPA一对一(表中的一条记录与相关表中的一条记录相对应)时使用@OneToOne映射到SQL数据库中。

在这里,我如何创建@OneToOne关系

@Entity
@Table(name = "IMP_Radio")
@NamedQuery(name = "ImpactRadio.findAll", query = "SELECT ia FROM ImpactRadio ia ")
public class ImpactRadio implements Serializable, IEntity<String> {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID")
    private String id;

    @OneToOne(mappedBy = "impactRadio", fetch = FetchType.EAGER)
    @JoinColumn(name = "IA_ID")
    private ImpactRadioAmendment amendments;

    @OneToOne(mappedBy = "impactRadio", fetch = FetchType.EAGER)
    @JoinColumn(name = "IA_ID")
    private ImpactRadioExamination examinations;


}




@Entity
@Table(name = "IMP_Radio_EXAMINATION")
public class ImpactRadioExamination implements Serializable, IEntity<String> {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID")
    private String id;

    @OneToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
    @JoinColumn(name = "IA_ID")
    private ImpactRadio ImpactRadio;

}


But I have an exception when I try to run a Junit test
Caused by: org.hibernate.AnnotationException: 
Unknown mappedBy in: com.tdk.persistence.fire.model.ImpactRadio.examinations, 
referenced property unknown: com.tdk.persistence.fire.model.ImpactRadioExamination.impactRadio

1 个答案:

答案 0 :(得分:1)

这是因为在这里您需要传递字段名称:

@OneToOne(mappedBy = "impactRadio", fetch = FetchType.EAGER)
@JoinColumn(name = "IA_ID")
private ImpactRadioAmendment amendments;

@OneToOne(mappedBy = "impactRadio", fetch = FetchType.EAGER)
@JoinColumn(name = "IA_ID")
private ImpactRadioExamination examinations;

实际字段是大写的:

@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
@JoinColumn(name = "IA_ID")
private ImpactRadio ImpactRadio;

ImpactRadio重命名为impactRadio