У меня есть следующие модели базы данных:JPA2 Критерии-API: выберите ... в (выбрать где)
A
aId
AB
aId
bId
B
bId
status
в спецификации Spring данных, я хочу, чтобы вернуть экземпляры А, когда B.status это «X». Код JPQL является следующее:
select a from A a where a in
(select ab.id.a from AB ab where ab.id.b.status= :status)
Эти классы моделей:
@Entity
public class A {
private Long aId;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "id.a")
private Set<AB> ab;
}
@Entity
public class B {
private Long bId;
private String Status;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "id.b")
private Set<AB> ab;
}
@Entity
public class AB {
private ABPK id;
}
public class ABPK {
@ManyToOne
@JoinColumn(name="aId")
private A a;
@ManyToOne
@JoinColumn(name="bId")
private B b;
}
Как бы быть критерии JPA в спецификации Spring?
public class ASpecifications {
public static Specification<A> test(final String status) {
return new Specification<Party>() {
@Override
public Predicate toPredicate(Root<A> a, CriteriaQuery<?> query, CriteriaBuilder cb) {
return null;
}
};
}
}
Спасибо, что у вас есть. К сожалению, примеры в этой ссылке не помогают мне с embeddedId. В моем случае у меня нет атрибута отображения для subQuery. Мне нужно aId, но ABPK имеет A, а не aId. – Techky