Метод JPA merge () не выполняет никаких изменений в базе данных. - PullRequest
0 голосов
/ 06 февраля 2020

Я использую JPA (реализация Hibernate) с JEE, работающим на WildFly 17 в Linux Ubuntu 18.04.

У меня есть следующий исходный код:

@TransactionAttribute(TransactionAttributeType.REQUIRED)
public Ave daveAnlegen(Ave ave) {
    Ave existingAve = checkExistsAve(ave.getStartDate(), ave.getObjekt());

    if (existingAve != null) {
        existingAve.setEndDate(ave.getEndDate());
        existingAve.setKaufInteressenten(ave.getKaufInteressenten());
        existingAve.setAveInvitLinks(ave.getAveInvitLinks());
        existingAve.setAngebotType(ave.getAngebotType());
        existingAve = this.em.merge(existingAve);
        return existingAve;
    } else {
        ave = this.em.merge(ave);
        return ave;
    }
}

Когда я отлаживаю код У меня есть сценарий использования, в котором существующийAve НЕ НЕДЕЙСТВИТЕЛЕН, и строка

existingAve.setEndDate(ave.getEndDate());

исполняется, так что endDate изменяется с 13.02 на 14.02, я ожидаю, что после строки

existingAve = this.em.merge(existingAve);

выполняется и метод завершается, значение EndDate в базе данных изменится с 13.02 на 14.02, но этого не происходит. То же самое верно для поля AngebotType: я вижу, что после строки

existingAve.setAngebotType(ave.getAngebotType());

поле val ie меняется с "geschlossen" на "offen", но значение поля базы данных НЕ изменяется.

Любые предложения приветствуются!

Спасибо и всего наилучшего: Алекс

...