[英]Spring Data JPA findAll with table in between (PropertyReferenceException)
[英]Spring data jpa operation between table views
在我的 spring 数据应用程序中,我映射了两个表视图:第一个视图
@Entity
@Immutable
@Table(name="VD_CONT")
@NamedQuery(name="VdContr.findAll", query="SELECT d FROM VdContr d")
public class VdContr {
@Id
@Column(name="CONTR_ID")
private Long id;
@Column(name="CF")
private String cf;
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="vdcontr")
private List<VdArr> vdArr;
}
和第二种观点
@Entity
@Immutable
@Table(name="VD_ARR")
@NamedQuery(name="VdArr.findAll", query="SELECT v FROM VdArr v")
public class VdArr {
@Id
@Column(name="ARR_ID")
private Long id;
@Column(name="FK_CONTR_ID")
private Long fkContrId;
@ManyToOne(fetch=FetchType.LAZY)
public VdContr vdcontr;
}
如果我将关系“OneToMany”和“ManyToOne”(1,第一个视图:很多,第二个视图),我收到错误。 我的问题是:是否可以在两个表视图之间创建关系?
您需要将@JoinColumn 添加到 VdContr。
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "vdcontr_id", nullable = false)
通常,视图的映射方式与表的映射方式相同。
通过查看您的课程,问题是 Hibernate 找不到正确的连接列。 您需要指定它。
此外,在您的VdArr
中,您应该删除fkContrId
,因为 hibernate 需要使用此列来 map 与VdContr
关系。
通过查看您的代码,连接列是FK_CONTR_ID
,因此您需要使用@JoinColumn
指定它。
@Entity
@Immutable
@Table(name = "VD_ARR")
@NamedQuery(name = "VdArr.findAll", query = "SELECT v FROM VdArr v")
public class VdArr {
@Id
@Column(name = "ARR_ID")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "FK_CONTR_ID")
public VdContr vdcontr;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.