0
我遇到了很奇怪的問題,無法找到解決的辦法。我寫了下面的HQL中的IntelliJ的HQL控制檯一個屬性的hql更新查詢
update NewsEntity ne set ne.main=false where ne.main=true
堆棧跟蹤
java.lang.IllegalArgumentException: node to traverse cannot be null!
at org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:31)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:254)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(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)
in RemoteSessionImpl.createQuery(RemoteSessionImpl.java:50)
in RemoteUtil.executeWithClassLoader(RemoteUtil.java:122)
in RemoteUtil$2$1.invoke(RemoteUtil.java:81)
in HibernateEngine.createQuery(HibernateEngine.java:142)
當我寫一個delete
查詢我沒有同樣的問題。
我在以下文章HQL update query的基礎上進行了此查詢。但是,似乎無法弄清楚爲什麼我仍然有這個問題。
@Antropo確定。但我沒有獨特的結果。除此之外的所有記錄都不是主要記錄。我不相信如果我想改變一個屬性的所有記錄。我應該得到記錄,更改每個循環中的屬性並保存 – Ray
使用list()更改'uniqueResult()'並更新循環中的所有對象。 – Atropo
@Antropo我明白,如果我有列表,我改變循環OK中的屬性,但這意味着,而不是分配這個任務上的數據庫我手動和循環。在db中簡單查詢需要更多時間。如果我有10000條記錄... – Ray