繁体   English   中英

Spring 数据 jpa 表视图之间的操作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM