#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.