有人可以帮我调查一下这个问题,可能发生了什么导致该应用程序生成此错误。我正在按照本教程使用 Hibernate in Netbeans 。到达“from Film”这一行后,根据教程将执行测试读取 Film 表的记录,但结果是以下错误。我在谷歌上搜索了该怎么做,到目前为止我所看到的只是据报道 javassist jar 文件可能存在于不同的目录中。一个在 Hibernate (Hibernate 4.x-javassist-3.15.0.GA) 目录中,我发现这是真的,另一个在 glassfish (Glassfish Server 4) 目录中。我尝试在 glassfish lib 目录中搜索它,但似乎不存在类似的东西。
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 列表。
最佳答案
您使用的 javassist 版本太旧。对于 Hibernate 4,您需要一个 javassist 版本 newer than 3.16 。 this related question 中讨论了同样的问题。 。考虑使用 Maven 或 Gradle 等构建工具来构建您的项目。这些工具负责为您解决传递依赖关系,以便您可以避免此类版本冲突。
关于hibernate - Hibernate 和 Netbeans 中的 Javassist ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23215917/