java.lang.ClassCastException: org.hibernate.hql.ast.tree.SqlNode не может быть приведен к org.hibernate.hql.ast.tree.FromReferenceNode

#java #hibernate #hql

#java #спящий режим #hql

Вопрос:

Я пытаюсь обновить запись с помощью запроса HQL, но я получаю CastException . Если бы кто-нибудь мог мне помочь, я был бы очень признателен. Я уже некоторое время проверял Интернет, но не могу найти никакой информации по этому поводу. Пожалуйста, дайте мне знать, если у вас есть дополнительная информация об этом исключении.

Полное сообщение об ошибке, возвращающее его:

Исключение в потоке "AWT-EventQueue-0" java.lang.ClassCastException: org.hibernate.hql.ast.tree.SqlNode не может быть приведен к org.hibernate.hql.ast.tree.FromReferenceNode
в org.hibernate.hql.ast.HqlSqlWalker.generateSyntheticDotNodeForNonQualifiedPropertyRef(HqlSqlWalker.java:495)
 в org.hibernate.hql.ast.HqlSqlWalker.lookupNonQualifiedProperty(HqlSqlWalker.java:488)
в org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1102)
 в org.hibernate.hql.antlr.HqlSqlBaseWalker.assignment(HqlSqlBaseWalker.java:1008)
 в org.hibernate.hql.antlr.HqlSqlBaseWalker.setClause(HqlSqlBaseWalker.java:729)
в org.hibernate.hql.antlr.HqlSqlBaseWalker.updateStatement(HqlSqlBaseWalker.java:349)
 в org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:237)
 в org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
 в org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
 в org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
 в org.hibernate.engine.запрос.HQLQueryPlan .(HQLQueryPlan.java:77)
 в org.hibernate.engine.запрос.HQLQueryPlan .(HQLQueryPlan.java:56)
в org.hibernate.engine.запрос.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
в org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
 в org.hibernate.impl.AbstractSessionImpl.CreateQuery(AbstractSessionImpl.java:112)
 в org.hibernate.impl.SessionImpl.CreateQuery(SessionImpl.java:1623)
в базе данных.HibernateConnection.updateFlight(HibernateConnection.java:161)
 на контроллере.Контроллер.ChangeFlight(Controller.java:527)
 при просмотре.CreateChangeFlightView.btnSaveActionPerformed(CreateChangeFlightView.java:738)
при просмотре.CreateChangeFlightView.access$ 1000(CreateChangeFlightView.java:45)
при просмотре.CreateChangeFlightView$6.actionPerformed(CreateChangeFlightView.java:299)
 в javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
 в javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
 в javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
 в javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
 в javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
 в java.awt.Component.processMouseEvent(Component.java:6263)
 в javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
 в java.awt.Component.processEvent(Component.java:6028)
 в java.awt.Container.processEvent(Container.java:2041)
 в java.awt.Component.dispatchEventImpl(Component.java:4630)
 в java.awt.Container.dispatchEventImpl(Container.java:2099)
 в java.awt.Component.dispatchEvent(Component.java:4460)
 в java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
 в java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
 в java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
 в java.awt.Container.dispatchEventImpl(Container.java:2085)
 в java.awt.Window.dispatchEventImpl(Window.java:2478)
 в java.awt.Component.dispatchEvent(Component.java:4460)
 в java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
 в java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
 в java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
 в java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
 в java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
 в java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
 в java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

запрос: удален

Комментарии:

1. Когда это происходит в каком-то распределенном пакете (по сравнению с вашим собственным кодом), это обычно означает, что в файлах JAR, которые используются для поддержки пакета, есть несоответствие. В этом случае, вероятно, один из двух упомянутых классов находится в файле JAR, который находится на неправильном уровне версии, или два задействованных класса ссылаются на такие несовместимые классы из других источников. (Конечно, это также может быть обычная ошибка старого кода, в зависимости от того, насколько хорошо протестирован пакет.)

2. Спасибо за комментарии до сих пор. Я отредактировал запрос в своем начальном сообщении.

3. У меня также есть 4 других запроса на обновление hql, которые работают нормально. Это только тот, который выдает исключения.

Ответ №1:

Проблема вызвана тем, что from это зарезервированное слово в HQL. Поскольку невозможно экранировать ключевое слово в HQL, единственным эффективным решением является переименование этого поля.

Комментарии:

1. О, спасибо, чувак. Я попытаюсь переименовать поле to утром. я действительно ценю вашу помощь. Это действительно сделало меня невежественным.

2. У меня была такая же проблема с использованием повторно сохраненного слова (order) в качестве псевдонима. Я использовал другой псевдоним, и я больше не получал ClassCastException .

3. можете ли вы вставить сюда код. я не понял, что вы сказали

4. Здесь тот же случай, что и в упомянутом axtavt, но с ключевым словом «group» для Oracle db.