我有一个父类,其中属性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添加到父母。但我不喜欢这种可能性,因为每次我在父母和/或子网站上更改内容时我都必须更新此计数器。
答案 0 :(得分:2)
很简单。您需要以下JPQL查询:
select p
from Parent p
where size(p.children) = 2