change the transaction in DAO, in case it's in transaction and block all, add exception

This commit is contained in:
Vu Tuan Minh
2025-10-24 23:11:47 +02:00
parent 0553fc13f7
commit d55e48b7e4
4 changed files with 154 additions and 81 deletions

View File

@@ -10,23 +10,39 @@ public class QuizzDAO extends AbstractJpaDao<Integer, Quizz> {
this.setClass(Quizz.class);
}
public void deleteAllQustion(int quizz_id){
EntityTransaction et= em.getTransaction();
et.begin();
Quizz quizz = em.find(Quizz.class, quizz_id);
quizz.getQuestions().clear();
em.merge(quizz);
et.commit();
public void deleteAllQustion(int quizzId) {
EntityTransaction t = em.getTransaction();
try {
if (!t.isActive()) t.begin();
Quizz quizz = em.find(Quizz.class, quizzId);
if (quizz != null) {
quizz.getQuestions().clear();
em.merge(quizz); // ✅ merge instead of persist
}
t.commit();
} catch (Exception e) {
if (t.isActive()) t.rollback();
e.printStackTrace();
throw e;
}
}
public void addQuestion(int quizz_id, int question_id){
EntityTransaction et= em.getTransaction();
et.begin();
Quizz quizz = em.find(Quizz.class, quizz_id);
Question question =em.find(Question.class, question_id);
public void addQuestion(int quizzId, int questionId) {
EntityTransaction t = em.getTransaction();
try {
if (!t.isActive()) t.begin();
Quizz quizz = em.find(Quizz.class, quizzId);
Question question = em.find(Question.class, questionId);
quizz.getQuestions().add(question);
em.merge(quizz);
et.commit();
if (quizz != null && question != null) {
quizz.getQuestions().add(question);
em.merge(quizz);
}
t.commit();
} catch (Exception e) {
if (t.isActive()) t.rollback();
e.printStackTrace();
throw e;
}
}
}