JPA Hibernate EnableJpaAuditing isUpdateNe Необходимо - PullRequest
0 голосов
/ 10 февраля 2020

Я использовал @EnableJpaAuditing, @ LastModifiedDate,@EntityListeners (AuditingEntityListener.class), предоставленный JPA, для записи информации аудита, но обнаружил, что если поле моего объекта не изменилось, JPA не будет отправлять операторы обновления SQL в базу данных. , Я посмотрел на исходный код и увидел, что hibernate будет вызывать isUpdateNeved, чтобы решить, отправлять ли обновление SQL в базу данных.

if ( isUpdateNecessary( event, mightBeDirty ) ) {
            substitute = scheduleUpdate( event ) || substitute;
        }

        if ( status != Status.DELETED ) {
            // now update the object .. has to be outside the main if block above (because of collections)
            if ( substitute ) {
                persister.setPropertyValues( entity, values );
            }

            // Search for collections by reachability, updating their role.
            // We don't want to touch collections reachable from a deleted object
            if ( persister.hasCollections() ) {
                new FlushVisitor( session, entity ).processEntityPropertyValues( values, types );
            }
        }

В результате моя информация аудита не будет обновлена. Что мне делать, если я хочу выполнить обновление SQL, несмотря ни на что. Спасибо за ваш ответ.

...