执行 JPA 一对一时引用 属性 未知
referenced property unknown when doing JPA One-to-One
我有这两个实体,在执行 JPA 一对一时,我想在 SQL 数据库中映射 @OneToOne(table 中正好有一个记录完全对应相关 table)
中的一条记录
这里是我如何创建@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
因为这里需要传递字段名:
@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
。
我有这两个实体,在执行 JPA 一对一时,我想在 SQL 数据库中映射 @OneToOne(table 中正好有一个记录完全对应相关 table)
中的一条记录这里是我如何创建@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
因为这里需要传递字段名:
@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
。