JPQL / HQL - 限制子项列表的项目

时间:2018-03-25 12:43:21

标签: hibernate jpa spring-data-jpa hql jpql

我有以下实体关系:

@Entity
public class Parent {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(columnDefinition = "serial")
    private Long id;

    @OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
    private List<Child> children;
}

和子实体:

@Entity
public class Child {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(columnDefinition = "serial")
    private Long id;

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Parent parent;
}

我使用Spring JPA存储库,因此对于调用数据,我使用默认方法parentRepository.findOne(id)

我需要获取父实体的List,其中Parent的每个实体将被获取有限大小的Children,例如10。

你能告诉我是否有可能使用JQPL或HQL以及这个选择是什么样的?提前谢谢。

修改

我没试过像这样使用hibernate注释@BatchSize:

@BatchSize(size = 5)
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
private List<Child> children;

但是没有用,当我取来父母所有的孩子都被抓住了。

1 个答案:

答案 0 :(得分:0)

使用这种方式

@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
@Size(min=1, max=3)
private List<Child> children;