Spring JPA, как сравнить старую версию перед принятием сущности - PullRequest
0 голосов
/ 12 июня 2019

Я использовал Spring jpa и JPARepository, чтобы написать сущность CURD, я хочу сравнить значение сущности перед коммитом; как это сделать?

Я пытаюсь получить сущность из db по id В @PreUpdate, но выбрасываю исключение, если я добавляю isSynchronizationActive, транскрипция зафиксирована.

        if (action.startsWith("Pre")) {
            scriptService.runScriptByCode(code, mutableMapOf<String, Any>("entity" to ent));
        } else if (TransactionSynchronizationManager.isSynchronizationActive()) {
                println("CommonListener code is ${code}")
                scriptService.runScriptByCode(code, mutableMapOf<String, Any>("entity" to ent));
            }
code code is com.khidi.message.domain.StatisMsg::PreUpdate
code code is com.khidi.message.domain.StatisMsg::PreUpdate
2019-06-12 11:23:45.756 ERROR 20244 --- [nio-9093-exec-1] o.h.i.ExceptionMapperStandardImpl        : HHH000346: Error during managed flush [java.lang.StackOverflowError]
org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:541)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...