Java 执行JPA一对一时引用的属性未知
我有这两个实体,我想在SQL数据库中映射@OneToOne,在执行JPA时使用表中的一对一恰好一记录,该记录对应于相关表中的恰好一条记录 下面是我如何创建@OneToOne关系的Java 执行JPA一对一时引用的属性未知,java,sql,spring,jpa,hibernate-mapping,Java,Sql,Spring,Jpa,Hibernate Mapping,我有这两个实体,我想在SQL数据库中映射@OneToOne,在执行JPA时使用表中的一对一恰好一记录,该记录对应于相关表中的恰好一条记录 下面是我如何创建@OneToOne关系的 @Entity @Table(name = "IMP_Radio") @NamedQuery(name = "ImpactRadio.findAll", query = "SELECT ia FROM ImpactRadio ia ") public class ImpactRadio implements Seria
@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。我想这是因为mappedBy。它必须对应于目标类中的一个字段,并且您的字段是ImpactRadio,而不是ImpactRadio您已经编写了变量ImpactRadio大写的第一个字符,它必须是小写的。