Замена для DirectPropertyAccessor? - PullRequest
0 голосов
/ 27 мая 2019

Я обновляю проект Spring 4.3.2 до Spring 5.1.5.Один из моих тестовых примеров начал сбой с ошибкой.

ClassNotFoundException: org.hibernate.property.DirectPropertyAccessor

Это имеет смысл, поскольку в Hibernate 5 это устарело.x - самая низкая совместимая версия Hibernate для Spring 5.x.Я использую его в своем hbm.xml, как показано ниже:

<class name="Notification"
       table="T_NOTIFICATION"
       lazy="false">

    <id name="id"
        type="integer"
        column="ID"
        unsaved-value="null"
        access="property">
        <generator class="identity"/>
    </id>

    <!-- A versioned entity. -->
    <version name="version"
             column="VERSION"
             access="org.hibernate.property.DirectPropertyAccessor"/>

Чем я должен заменить поле доступа, чтобы сохранить то же поведение?

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Используя access=<class-name>, вы должны использовать его, только если у вас есть свой собственный класс, который вы хотите использовать.Если вы хотите использовать прямой доступ к полю вместо свойств, используйте access="field" вместо того, что вы имеете сейчас.См. Также Справочное руководство по Hibernate .

Внутренне ваша текущая версия будет использовать DirectPropertyAccessor при обновлении Hibernate, она автоматически адаптируется к недавно представленному другому классу для использования.Теперь это бремя ложится на hibernate, а вам не нужно знать внутренний API hibernate.

0 голосов
/ 27 мая 2019

Проблема не в версии Spring, а в версии Hibernate.

org.hibernate.property.DirectPropertyAccessor устарела в версии 5.x hibernate.

DirectPropertyAccessor следует заменить на org.hibernate.property.access.internal.PropertyAccessFieldImpl или org.hibernate.property.access.internal.PropertyAccessMixedImpl в версиях с более высоким режимом гибернации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...