関連するエンティティのコレクションを持つエンティティがあります。
public class Student{
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "COURSE_STUDENT_ID" , insertable=false,updatable=false)
private Set <Course> courses;
コース名と学生のクラス ID で学生をフィルタリングしたいと考えています。今のところ、クラス ID でフィルタリングする方法を考え出しましたが、Student エンティティに一連のコースがあり、テーブルが関連していることを考えると、courseId でフィルタリングする方法がわかりません。いくつかの記事を読みましたが、既に持っているものと一致するコードはありません。
CriteriaBuilder criteriaBuilder = persistenceStore.createCriteriaBuilder();
CriteriaQuery<Object> criteria = criteriaBuilder.createQuery();
Root<Student> root = criteria.from(Student.class);
List<Predicate> params = new ArrayList<Predicate>();
params.add(criteriaBuilder.equal(root.get("classId"),classId));
Predicate[] predicates = new Predicate[params.size()];
params.toArray(predicates);
criteria.select(root);
criteria.where(criteriaBuilder.and(predicates));
Query query = persistenceStore.createQuery(criteria);
List<Student> resultList = query.getResultList();