【发布时间】:2025-12-30 08:25:12
【问题描述】:
我有一个父类,其属性 children 作为一对多关系。在构建此示例时,我假设一个孩子只能有一个父母:-)
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(updatable = false, nullable = false, insertable = false, unique = true)
private Long id;
private String name;
@OneToMany(mappedBy = "parent")
private Set<Child> children;
}
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(updatable = false, nullable = false, insertable = false, unique = true)
private Long id;
private String name;
@ManyToOne
private Parent parent;
}
但现在我想只过滤例如有 2 个孩子的父母。 我可以使用什么 JPA 功能来实现它?
一位同事建议为父级添加一个 childrenCounter。但我不喜欢这种可能性,因为每次更改父站点和/或子站点上的某些内容时,我都必须更新此计数器。
【问题讨论】:
-
根据数据库的大小,您可以使用
streams(例如resultSet.streams.filter(p -> p.children.size == 2))进行过滤。以防万一返回的只是一个小列表。
标签: hibernate jpa eclipselink jpa-2.0