мой ручной сброс () не влияет на мой второй персистент () - PullRequest
0 голосов
/ 20 октября 2019

Я хотел проверить 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!!!!!
...