【问题标题】:Spring data jpa operation between table views表视图之间的spring数据jpa操作
【发布时间】:2021-05-14 14:12:21
【问题描述】:

在我的 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,第一个视图:很多,第二个视图),我收到错误。 我的问题是:是否可以在两个表视图之间创建关系?

【问题讨论】:

    标签: java spring spring-boot spring-data-jpa spring-data


    【解决方案1】:

    您需要将@JoinColumn 添加到 VdContr。

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "vdcontr_id", nullable = false)
    

    【讨论】:

      【解决方案2】:

      通常,视图的映射方式与表的映射方式相同。

      通过查看您的类,问题在于 Hibernate 找不到正确的连接列。您需要指定它。

      另外,在您的VdArr 中,您应该删除fkContrId,因为hibernate 将需要使用此列来映射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;
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-13
        • 1970-01-01
        • 2015-08-15
        • 1970-01-01
        • 2017-01-04
        • 1970-01-01
        相关资源
        最近更新 更多