Spring数据JPA避免多对一关系中的多重选择

时间:2015-02-15 19:28:18

标签: spring hibernate jpa orm spring-data-jpa

我使用Spring Data JPA并使用hibernate从Child到Parent Class有多对一的关系。我正在编写一个搜索API,它将使用一些子表列搜索子表,并返回子对象的列表以及每个子对象的Parent类中的一些数据。我默认情况下急切地获取多对一关系。我面临的问题是让我们说在搜索子表后返回10个条目然后hibernate在父类上做10个不同的选择查询以获得每个子对象的Parent对象。有没有办法优化这个?对于类似问题here有一个解决方案,但它适用于一个或多个案例。我也无法在网上找到任何有用的信息。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

因为你没有在问题中显示任何代码,所以要解决它有点难,但我想如果你指定join column@JoinColumn注释)并使用@OneToMany注释parent类{指定fetch类型)和@ManyToOne child内你不应该有任何问题:

@Entity(name ="Parent")
public class Parent {
    @Id
    @Column
    private int id;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name= "paren_id")
    private Set<Child> children;
    //getters and setters
}

@Entity(name ="Child")
public class Child{
    @Id
    @Column
    private int id;

    @ManyToOne
    private Parent parent;

    //getters and setters
}