Cześć - mam pewien problem otoz:
mam klase:
@Getter
@Setter
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "GenericClass")
public class GenericClass {
......
}
dzieki ktorej dziedzicze do drugiej klasy i mam w niej 3 odniesienia hibernetawe @OneToMany - bidirectional:
@Getter
@Setter
@Entity(name = "NonGeneric")
@DiscriminatorValue("NonGeneric")
public class NonGeneric extends GenericClass {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cosTam", cascade = CascadeType.ALL)
private List<TagA> tagsA;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cosTam", cascade = CascadeType.ALL)
private List<TagB> tagsB;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cosTam", cascade = CascadeType.ALL)
private List<TagC> tagsC;
}
wywołuję z repozytorium Jpa (interfejsu ktora ma JpaSpecificationExecutor) takie cos:
public Specification<NonGeneric> getAllNonGenerics() {
return (root, query, cb) -> {
if (query.getResultType().equals(NonGeneric.class)) {
root.fetch("tagsA", JoinType.LEFT);
root.fetch("tagsB", JoinType.LEFT);
root.fetch("tagsC", JoinType.LEFT);
}
Specification<NonGeneric> spec = where(null);
assert spec != null;
return spec.toPredicate(root, query, cb);
};
}
Specyfikacja dziala dla innych rzeczy a tutaj nie..
i dostaję:
org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags - dalej wymienione tagsA tagsB tagsC etc..
Jakie macie rozwiazania na to? Moze zmienic troche relacje? potrzebuje na raz sciagnac calosc..