Требование
У меня есть простая взаимосвязь OneToMany между двумя объектами. Я хочу использовать выражение свойства JPA, чтобы найти родительский объект с условием, которое соответствует всем дочерним объектам.
Родительский
@Entity
public class PcSigningStatus {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "signingStatus")
private List<PcSigningProcessEvent> signingProcessEvents = new ArrayList<>();
Дочерний
@Entity
public class PcSigningProcessEvent {
@Enumerated(EnumType.STRING)
private ProcessEventType phase;
@ManyToOne
@JoinColumn(name = "SIGNING_STATUS_ID")
private PcSigningStatus signingStatus;
}
Родительский репозиторий
public interface SigningStatusRepo extends CrudRepository<PcSigningStatus, Long> {
PcSigningStatus[] findBySigningProcessEvents_PhaseNot(ProcessEventType phase);
}
Выпуск
Предположим, у меня есть только 1 родительский объект в базе данных с 2 дочерними объектами, содержащими различное значение phase . Приведенный выше запрос возвращает одного и того же родителя несколько раз в зависимости от количества дочерних элементов, для которых он не соответствует значению phase in. Мне нужна помощь в поиске способа возврата родительского объекта, только если phase присутствует не во всех дочерних объектах