Javassist ClassCastException в Hibernate и Netbeans

Может ли кто-нибудь помочь мне разобраться в этом, что могло произойти, из-за чего это приложение генерирует эту ошибку. Я следую этому руководству по использованию Hibernate в Netbeans. После перехода к этой строке «из фильма», которая, согласно учебнику, должна быть выполнена для проверки чтения записей таблицы «Фильм», но результатом является ошибка ниже. Я погуглил, чтобы найти, что делать, все, что я видел до сих пор, это то, что, как сообщается, файл jar javassist может существовать в разных каталогах. Один в каталоге Hibernate (Hibernate 4.x-javassist-3.15.0.GA), что, как я выяснил, верно, а другой в каталоге Glassfish (Glassfish Server 4). Я попытался найти это в каталоге библиотек Glassfish, похоже, ничего подобного не существует.

java.lang.ClassCastException: dvdstore.Language_$$_javassist_4 cannot be cast to javassist.util.proxy.ProxyObject
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxy(JavassistLazyInitializer.java:147)
    at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:71)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:631)
    at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3737)
    at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:360)
    at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:281)
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
    at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
    at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038)
    at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:630)
    at org.hibernate.type.EntityType.resolve(EntityType.java:438)
    at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:139)
    at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:982)
    at org.hibernate.loader.Loader.doQuery(Loader.java:857)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    at org.hibernate.loader.Loader.doList(Loader.java:2542)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    at org.hibernate.loader.Loader.list(Loader.java:2271)
    at org.hibernate.hql.classic.QueryTranslatorImpl.list(QueryTranslatorImpl.java:940)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)

список банок для проекта. Список jar-файлов для проектавведите здесь описание изображения


person ken4ward    schedule 22.04.2014    source источник
comment
Вы строите свой проект с Maven? Можете ли вы сделать dependency:tree в своем проекте и вставить вывод? Скорее всего, вы используете слишком новую версию javassist, несовместимую с Hibernate.   -  person Rafael Winterhalter    schedule 24.04.2014
comment
Нет, я не использую Maven, просто веб-проект. Я отредактировал проект, чтобы добавить список файлов jar, с которыми я работаю. Спасибо. очень благодарен.   -  person ken4ward    schedule 24.04.2014


Ответы (1)


Вы используете слишком старую версию javassist. Для Hibernate 4 требуется версия javassist новее 3.16. Та же проблема обсуждается в этом связанном вопросе. Рассмотрите возможность использования инструмента сборки, такого как Maven или Gradle, для создания вашего проекта. Эти инструменты позаботятся о разрешении транзитивных зависимостей для вас, чтобы вы могли избежать таких конфликтов версий.

person Rafael Winterhalter    schedule 24.04.2014
comment
Спасибо большое. Думаю, это должно решить загадку. Ценить. Я конвертирую проект в проект Maven и посмотрю, предлагает ли он лучшую производительность. - person ken4ward; 24.04.2014
comment
Эй, с Maven сложно начать, но в долгосрочной перспективе это стоит затраченных усилий. Лично я предпочитаю Gradle. Если на ваш вопрос дан ответ, отметьте этот вопрос как решенный. Спасибо! - person Rafael Winterhalter; 24.04.2014
comment
Ok. Достигает ли Gradle того же, что и Maven для управления зависимостями? Я попробую. Спасибо. - person ken4ward; 24.04.2014
comment
Да, посмотрите на пример здесь: gradle.org/docs/current/userguide /tutorial_java_projects.html - person Rafael Winterhalter; 24.04.2014