java - JPA - 按需多对一

标签 java hibernate jpa

我有实体工作流,它与 ValidationResults 类具有 @OneToMany 关系。它是延迟获取的,但有时我想获取所有工作流程并对其访问 ValidationResults 进行交互。在那一刻,我希望 jpa 急切地获取所有数据,而不是每次访问 ValidationResults 时都查询。我用的是springDataJpa,怎么做,有什么办法可以用@Query来做吗?

我尝试实现类似的目标,但我不知道如何实现

   //here all the workflows has corresponding data eagerly
    List<Workflow> workflows = workflowService.getAllWorkflowsWithValidationResultsEagerly();

    //here validationResults ref is lazy, when I try to access it it does query
    List<Workflow> workflows = workflowService.getAllWorkflowsUsually();

这是我的实体。

@Entity
@Table(name = "workflow")
public class Workflow {

     ..............   

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "workflow", cascade = CascadeType.ALL)
    private Set<ValidationResults> validationResultsSet = new HashSet<>();

    public Set<ValidationResults> getValidationResultsSet(){return this.validationResultsSet;}
    ...............
}

和 ValidationResult 类

@Entity
@Table(name = "validation_results")
public class ValidationResults {
...
    @ManyToOne
    @JoinColumn(name = "workflow_id", insertable = false, updatable = false)
    private Workflow workflow;

 ....
}

最佳答案

执行此操作的 spring boot-ish 方法是使用 @EntityGraph如文档中所述。

关于java - JPA - 按需多对一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52388764/

相关文章:

mysql - 弥补用原生nativeQuery和MAX(ID)获取2个对象

java - 如何使用 jpa 和 hibernate 将 native 查询映射到 POJO 类

hibernate - 当子实体具有复合PK时,如何在父实体中定义@OneToMany?

java - 如何在 Android 中将多个图像从 ArrayList 上传到 Firebase Storage?

java - 与Hibernate结合使用时,设置C3P0参数值的最佳方法是什么?

java - 如何在 Java 中将当前日期加一个月?

java - 向JPA和Hibernate注册SQL函数

java - 使用 JPA 2.0 标准查询 map

java - 如何使用方法按升序和降序输入数组?

java - 使用包装器通过 Runtime.exec() 运行命令