【问题标题】:JPQL / HQL - Limit items for list of childrenJPQL / HQL - 限制子项列表
【发布时间】:2018-09-03 16:24:40
【问题描述】:

我有以下实体关系:

@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)

我需要获取父实体的列表,其中每个父实体将获取有限大小的子实体,例如 10。

您能否告诉我是否可以使用 JQPL 或 HQL 以及此选择是什么样的?提前致谢。

编辑:

我没有尝试像这样使用休眠注释@BatchSize:

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

但是没有用,当我获取父级时,所有子级都被获取了。

【问题讨论】:

  • @MadhusudanaReddySunnapu 嗨,很抱歉我的问题表述错误。现在我对其进行编辑,您可以看到为什么这个问题对我来说不是解决方案。我不能为父母的 id 为“X”的孩子做反向选择,因为我还需要选择父母名单,他们的孩子数量有限。
  • 我也怀疑这是否可能。通过stackoverflow.com/questions/26328187/…

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


【解决方案1】:

这样使用

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

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 2010-11-17
    • 2011-08-26
    • 2011-02-24
    • 1970-01-01
    • 2017-04-21
    • 2012-02-05
    相关资源
    最近更新 更多