У меня есть родительский класс с дочерними элементами свойства как отношение «один ко многим». Как строится этот пример я предполагаю, что один ребенок может иметь только один из родителей :-)Могу ли я использовать JPA для фильтрации родительского по числу детей
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 я могу использовать для ее реализации?
Коллега предложил добавить childCounter к родительскому. Но мне не нравится эта возможность, потому что мне придется обновлять этот счетчик каждый раз, когда я что-то меняю на родительском и/или дочернем сайтах.
В зависимости размер вашей базы данных, можно фильтровать с помощью 'streams' (например,' resultSet.streams.filter (р -> p.children.size == 2) ') , На всякий случай это небольшой список вернулся. – Tom