Witam,
Mam klasę Project i Report, relacja między nimi to jeden do wielu jednokierunkowa. Projekt może mieć wiele raportów.
Kod:
public List getTest(long idProject) {
List<Report> reports = null;
try {
if (!entityManager.getTransaction().isActive()) {
entityManager.getTransaction().begin();
}
TypedQuery<Report> typedQuery = entityManager.createQuery(
"select r from Report r, Project p where p.id = :id", Report.class);
typedQuery.setParameter("id", idProject);
reports = typedQuery.getResultList();
entityManager.getTransaction().commit();
return reports;
} catch (Exception ex) {
System.out.println(ex.getMessage());
entityManager.getTransaction().rollback();
return null;
}
}
List<Report> reports = dBreport.getTest(1L);
for(Report r :reports){
System.out.println(r.getTitle());
}
Wypisze:
r1
r2
A powinno wypisać samo r1.
W sql to wyglądałoby tak:
SELECT * FROM mojabaza.Report where Project_idProject =1;
Jak to zapisać w JPQL albo z criteria api?