PersistentMap does not implement the requested interface Collection

Довольно странная ошибка, не правда ли?

java.lang.IncompatibleClassChangeError: Class org.hibernate.collection.spi.PersistentMap does not implement the requested interface java.util.Collection

Происходит явно где-то внутри самого Hibernate. Появляется на полях с типом java.util.Map, использование которых я уже описывал ранее. Но почему? Ведь до этого всё работало?

Особое внимание стоит обратить на IncompatibleClassChangeError. Именно это и было ключом к разгадке этой ошибки, на которую я потратил почти целый день. Что-то меняет класс, в результате чего он становится несовместимым с предыдущим. Со временем я начал понимать, что это явно как-то связано с плагином hibernate-enhance-maven-plugin, который я добавил в проект просто ради эксперимента:

Как видите, я здесь включил все опции, что нашёл. Видимо, этого не стоило делать.

Если убрать enableExtendedEnhancement, или поставить его в false, то ошибка исчезнет. На всякий случай, я вообще убрал все значения, чтобы они такими, какими описаны по умолчанию:

Значения по умолчанию, судя по исходному коду плагина, такие:

  • failOnError = true
  • enableLazyInitialization = true
  • enableDirtyTracking = true
  • enableAssociationManagement = false
  • enableExtendedEnhancement = false

В моем случае они не особо важны, да и в целом, я подумываю, что и сам плагин мне не особо нужен.

Один комментарий к “PersistentMap does not implement the requested interface Collection”

  1. А что такое «enableExtendedEnhancement»?
    Какое-то страшное древнее заклинание, о значении которого никто не помнит, или задокументированная фича?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *