2011-10-10 93 views
2

我试图用更新记录HQL查询但我是得到CastException。 如果有人能帮助我,我会很感激。 我已经检查了一段时间的互联网,但我无法找到任何关于此的信息。 如果您有关于此例外的更多信息,请让我知道。java.lang.ClassCastException:org.hibernate.hql.ast.tree.SqlNode无法转换为org.hibernate.hql.ast.tree.FromReferenceNode

完整的错误消息的返回:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: org.hibernate.hql.ast.tree.SqlNode cannot be cast to org.hibernate.hql.ast.tree.FromReferenceNode 
     at org.hibernate.hql.ast.HqlSqlWalker.generateSyntheticDotNodeForNonQualifiedPropertyRef(HqlSqlWalker.java:495) 
     at org.hibernate.hql.ast.HqlSqlWalker.lookupNonQualifiedProperty(HqlSqlWalker.java:488) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1102) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.assignment(HqlSqlBaseWalker.java:1008) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.setClause(HqlSqlBaseWalker.java:729) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.updateStatement(HqlSqlBaseWalker.java:349) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:237) 
     at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228) 
     at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160) 
     at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111) 
     at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77) 
     at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56) 
     at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72) 
     at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) 
     at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) 
     at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623) 
     at Database.HibernateConnection.updateFlight(HibernateConnection.java:161) 
     at Controller.Controller.ChangeFlight(Controller.java:527) 
     at View.CreateChangeFlightView.btnSaveActionPerformed(CreateChangeFlightView.java:738) 
     at View.CreateChangeFlightView.access$1000(CreateChangeFlightView.java:45) 
     at View.CreateChangeFlightView$6.actionPerformed(CreateChangeFlightView.java:299) 
     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
     at java.awt.Component.processMouseEvent(Component.java:6263) 
     at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
     at java.awt.Component.processEvent(Component.java:6028) 
     at java.awt.Container.processEvent(Container.java:2041) 
     at java.awt.Component.dispatchEventImpl(Component.java:4630) 
     at java.awt.Container.dispatchEventImpl(Container.java:2099) 
     at java.awt.Component.dispatchEvent(Component.java:4460) 
     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) 
     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) 
     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) 
     at java.awt.Container.dispatchEventImpl(Container.java:2085) 
     at java.awt.Window.dispatchEventImpl(Window.java:2478) 
     at java.awt.Component.dispatchEvent(Component.java:4460) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

查询:删除

+0

你能显示查询吗? – axtavt

+0

当这种情况发生在某种分布式软件包(相对于您自己的代码)时,通常意味着在用于支持软件包的JAR文件中存在不匹配。在这种情况下,所提及的两个类中,有一个可能位于版本级别错误的JAR文件中,或者两个涉及的类从别处引用这些不兼容的类。 (当然,它也可能是一个普通的旧代码错误,具体取决于软件包的测试方式。) –

+0

感谢您的评论。我在我的开始帖子中编辑了查询。 – Donny

回答

2

问题是由一个事实,即from是HQL的保留字所致。由于在HQL中转义关键字并不容易,所以唯一可行的解​​决方案是重命名该字段。

+0

哦谢谢你。我尝试在早上重新命名为字段。我非常感谢你的帮助。这真的让我无能为力。 – Donny

+0

我使用rerserved word(order)作为别名时遇到同样的问题。我使用了另一个别名,而且我再也没有得到ClassCastException。 – Cristan

+0

你可以在这里粘贴代码吗?我不明白你说的 – umapathi

相关问题