Я хотел проверить flush, чтобы понять это, и написал код: - с FLUSMODE не в AUTO, а в режиме COMMIT - с помощью экспресс-flush () для синхронизации базы данных
Но результат не тот, чтоЯ ожидал. Вы можете увидеть код. Исключение выдается только при фиксации, а не при втором вызове persist ()!
EntityManager eMgr = emFactory.createEntityManager();
eMgr.setFlushMode(FlushModeType.COMMIT);
EntityTransaction tx = eMgr.getTransaction();
tx.begin();
persistPersonne(eMgr);
eMgr.flush();
eMgr.clear();
howManyPersonsInDatabase(eMgr, "after 1st persistence");
// here, method gives to me : 1 person (correct)
// (if i do not flush before --> 0 person)
persistPersonne(eMgr);
// here, should throw an exception, as my second persist is forbidden
// (due to integrity contraint)
// but NO! --> exception is thrown when commiting..
tx.commit();
// exception is thrown here!!!!!