Замена для IdTransferringMergeEventListener при использовании Spring 3.1 и Hibernate 4 - PullRequest
1 голос
/ 14 февраля 2012

Есть ли в Hibernate 4 версия org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener?

Я пытаюсь обновить приложение Spring 3.0.x + Hibernate 3.6 до Spring 3.1 + Hibernate 4, но не могу найти, как его обновить.

Это конкретно указано в моем applicationContext как:

<property name="eventListeners">
      <map>
        <entry key="merge">
          <bean
            class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener" />
        </entry>
      </map>
</property>

Если оставить все как есть, возникнет исключение:

Caused by: java.lang.ClassNotFoundException: org.hibernate.event.def.DefaultMergeEventListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)

предположительно, потому что Hibernate 4 больше не имеет класса DefaultMergeEventListener

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

похоже, класс переместился в org.hibernate.event.internal.DefaultMergeEventListener

3 голосов
/ 21 августа 2012

Весной люди решили не реализовывать это для Hibernate 4

Из сообщения об ошибке весной: https://jira.springsource.org/browse/SPR-9634

Мы намеренно держали поддержку Spring Hibernate 4 достаточно минимальной, чтобы оставаться близкими к нативным способам Hibernate 4. Как следствие, у нас нет планов повторно вводить IdTransferringMergeEventListener или какой-либо из наших бывших пользовательских типов LOB, все из которых были классами специального назначения для решения проблем, которые Hibernate должен действительно решить сам - так как они не имеют ничего общего с Spring и вызывали повторные головные боли от обслуживания со стороны Spring.

Вы можете создать свою собственную версию, конечно, на основе старого IdTransferringMergeEventListener Spring. Однако обратите внимание, что способ регистрации прослушивателей событий изменился в Hibernate 4. Это больше невозможно на уровне per-SessionFactory, поэтому Spring также не может поддерживать его в LocalSessionFactoryBean. Для получения подробной информации обратитесь к соответствующей документации Hibernate и соответствующим отчетам по Jiber Hibernate.

Юрген

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