Hibernate和Netbeans中的Javassist ClassCastException

时间:2014-04-22 09:44:10

标签: hibernate glassfish classcastexception javassist netbeans-8

有人可以帮助我调查一下,可能发生的事情是让这个应用程序产生这个错误。我正在按照本教程使用Hibernate in Netbeans。从“电影”到达这一行之后,根据教程,它将被执行以测试读取Film表的记录,但结果是下面的错误。我用google搜索要做什么,到目前为止我所看到的是,据报道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列表。 The list of jar files for the project enter image description here

1 个答案:

答案 0 :(得分:3)

您使用的是旧版本的javassist。对于Hibernate 4,您需要一个newer than 3.16的javassist版本。 this related question中讨论了同样的问题。考虑使用像Maven或Gradle这样的构建工具来构建项目。这些工具负责为您解决传递依赖关系,以便您可以避免此类版本冲突。