好的,所以我最近开始学习hibernate,我得到了Netbeans 8.0并开始浏览官方的Netbeans hibernate教程:https://netbeans.org/kb/docs/web/hibernate-webapp.html
然而,当我到达我测试我的HQL(“来自电影” - 我运行的查询)时,我收到了这个错误:
java.lang.ClassCastException: dvdrental.Language_$$_javassist_60 cannot be cast to javassist.util.proxy.ProxyObject
这一行之后还有很多其他的东西,但那不是我要去的地方。
我正在使用的hibernate库随Netbeans 8.0一起提供。所以我上网了,获得了官方的Hibernate 4.3.6。我在netbeans上配置它,使用它并得到相同的错误。
然后我删除了javassist-3.18.1-GA.jar,错误消失了。我能够毫无问题地运行我的HQL。删除我的netbeans附带的javassist-3.15.0-GA.jar也是如此 - 它解决了我所有的问题。
这让我想到了一个问题:这应该发生吗? javassist-3.18.1-GA.jar位于所需的文件夹中。为什么我在使用它时会出现错误而在省略它时不会出现任何错误?
为什么我首先得到这个错误?
完整错误如下。谢谢你的帮助,伙计们。
java.lang.ClassCastException: dvdrental.Language_$$_javassist_60 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)
答案 0 :(得分:1)
好的,所以我终于找到了解决这个问题的方法。显然,Netbeans 8.0似乎存在错误。联系Oracle之后,发布了更新 - Netbeans 8.0.1几乎解决了所有这些问题。所以,换句话说,问题与hibernate无关,而是Netbeans。
因此,如果您使用Netbeans 8.0,请确保更新IDE。
感谢。