From 1344a11f3a00795098f64f5e5fc4009a1aedf0d4 Mon Sep 17 00:00:00 2001 From: Vu Tuan Minh Date: Tue, 30 Sep 2025 01:03:45 +0200 Subject: [PATCH] Fini CriteriaTest --- src/main/java/jpa/JpaTest.java | 71 +++++++++++++++++++++++++++---- src/main/java/metier/Reponse.java | 1 - 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/src/main/java/jpa/JpaTest.java b/src/main/java/jpa/JpaTest.java index 172b4c4..4990383 100644 --- a/src/main/java/jpa/JpaTest.java +++ b/src/main/java/jpa/JpaTest.java @@ -3,14 +3,13 @@ package jpa; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityTransaction; +import jakarta.persistence.criteria.*; import metier.*; import java.util.ArrayList; import java.util.List; public class JpaTest { - - private EntityManager manager; public JpaTest(EntityManager manager) { @@ -28,16 +27,17 @@ public class JpaTest { EntityTransaction tx = manager.getTransaction(); tx.begin(); try { - //test.create_user_test(); - //test.create_session_test(); + test.create_user_test(); + test.create_session_test(); + test.create_quizz_test(1,1); //test.list_utilisateur(); //test.list_session(); + test.list_quizz(); } catch (Exception e) { e.printStackTrace(); } tx.commit(); - manager.close(); EntityManagerHelper.closeEntityManagerFactory(); System.out.println(".. done"); @@ -58,7 +58,6 @@ public class JpaTest { manager.persist(utilisateur1); manager.persist(utilisateur2); } - } private void create_session_test() { @@ -73,20 +72,27 @@ public class JpaTest { List ulist = manager.createQuery("select user from Utilisateur user").getResultList(); session1.setUtilisateurs(ulist); - manager.persist(session1); } } private void list_utilisateur() { - List result_utilisatuer_list = manager.createQuery("select u from Utilisateur u", Utilisateur.class).getResultList(); + CriteriaBuilder criteriaBuilder = manager.getCriteriaBuilder(); + CriteriaQuery query = criteriaBuilder.createQuery(Utilisateur.class); + Root from = query.from(Utilisateur.class); + query.select(from); + List result_utilisatuer_list = manager.createQuery(query).getResultList(); for (Utilisateur u : result_utilisatuer_list) { System.out.println(u.getId() + " " + u.getName() + " " + u.getEmail()); } } private void list_session() { - List result_session_list = manager.createQuery("select s from Session s", Session.class).getResultList(); + CriteriaBuilder criteriaBuilder = manager.getCriteriaBuilder(); + CriteriaQuery query = criteriaBuilder.createQuery(Session.class); + Root from = query.from(Session.class); + query.select(from); + List result_session_list = manager.createQuery(query).getResultList(); for (Session s : result_session_list) { System.out.println(s.getCodePIN() + " " + s.getTheme()); for (Utilisateur u : s.getUtilisateurs()) { @@ -94,4 +100,51 @@ public class JpaTest { } } } + + private void create_quizz_test(int userId, int sessionId) { + + CriteriaBuilder cb = manager.getCriteriaBuilder(); + + //GET USER + CriteriaQuery cqUser = cb.createQuery(Utilisateur.class); + Root userRoot = cqUser.from(Utilisateur.class); + cqUser.select(userRoot).where(cb.equal(userRoot.get("id"), userId)); + Utilisateur u1 = manager.createQuery(cqUser).getSingleResult(); + + //GET SESSION + CriteriaQuery cqSess = cb.createQuery(Session.class); + Root sessRoot = cqSess.from(Session.class); + cqSess.select(sessRoot).where(cb.equal(sessRoot.get("id"), sessionId)); + Session s1 = manager.createQuery(cqSess).getSingleResult(); + + List ls= u1.getSession(); + ls.add(s1); + u1.setSession(ls); + Quizz quizz1 = new Quizz(); + quizz1.setUtilisateur(u1); + quizz1.setSession(s1); + + manager.persist(quizz1); + manager.merge(u1); + manager.persist(s1); + } + + private void list_quizz() { + CriteriaBuilder cb = manager.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(Quizz.class); + Root from = cq.from(Quizz.class); + + List sessionIds = new ArrayList<>(); + sessionIds.add(1); + //https://www.w3schools.com/SQL/sql_join_inner.asp + //https://stackoverflow.com/questions/15990141/how-to-make-a-criteriabuilder-join-with-a-custom-on-condition + Join sessionJoin = from.join("session", JoinType.INNER); + cq.select(from).where(sessionJoin.get("id").in(sessionIds)); + + List quizzs = manager.createQuery(cq).getResultList(); + for (Quizz q : quizzs) { + System.out.println("Quizz ID: " + q.getId() + ", User: " + q.getUtilisateur().getName() + + ", Session ID: " + q.getSession().getId()); + } + } } diff --git a/src/main/java/metier/Reponse.java b/src/main/java/metier/Reponse.java index 048c998..601a28b 100644 --- a/src/main/java/metier/Reponse.java +++ b/src/main/java/metier/Reponse.java @@ -27,5 +27,4 @@ public abstract class Reponse implements Serializable { public String valHTML(){ return ""; } - } \ No newline at end of file