Я работал параллельно с автором, и я опубликую наше решение здесь для всех, кто столкнется с этим в будущем.
Исключение выдается, потому что Hibernate пытается разархивировать свою банку, чтобы найти классы сохраняемости. Как упоминают другие посты, OSGi не позволяет Hibernate работать как загрузчик классов, поэтому это не получается. Решением было указать все классы, которые нужно было загрузить вручную, а затем запретить загружать что-либо еще.
Мы использовали persistence.xml
файл и orm.xml
файл (мы использовали имена по умолчанию, поэтому нам не нужно было указывать и в нашем applicationContext.xml
).
Наш файл persistence.xml
просто указал на orm.xml
с помощью тега <mapping-file>
. Он также включал тег <exclude-unlisted-classes/>
, чтобы не допустить попытки загрузки дополнительных классов в спящем режиме.
Наш orm.xml
файл использовал <entity class="path.to.my.class" metadata-complete="false"/>
для вызова каждого класса сущностей, который нам нужно было загрузить. Часть metadata-complete
указывает hibernate использовать аннотации, найденные в классе, для завершения настройки.