2010-11-23 27 views
0

Webアプリケーション(JBoss、Turbine、Hibernate)のライブデプロイメントから例外を受け取りました。私は例外を再現することができないので、私はバグを修正することはできません。Hibernate DataException:更新できませんでした

select sum(entity.totalPrice) from Entity entity where entity.parent.id = :parentId and deleted is null 

いくつかのエンティティは、片方の親に属している:

org.hibernate.exception.DataException: could not update: [com.myproject.project.mypackage.objects.MyObject#1190] 
     at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77) 
     at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 
     at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2425) 
     at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307) 
     at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607) 
     at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92) 
     at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) 
     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234) 
     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142) 
     at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) 
     at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:41) 
     at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969) 
     at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1114) 
     at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) 

興味深いのは、以下のHQLを実行したとき、私はエラーを更新できませんでした。このを得ることです: は、ここで私が得る例外で。 このhqlは、より大きなアップデートプロセスの一部です。別のエンティティで更新するためにtotalPricesの合計が必要です。更新できなかったことが更新プロセスを参照する可能性はありますか? これは、アップデートが実行される前にエラーが発生しているとは思われません。より正確には、例外は、hqlを保持するQueryオブジェクトに対してlist()メソッドが呼び出されたときに発生します。

エンティティのtotalPriceをnullに設定して例外を再現しようとしましたが、例外はありません。同じ親に多くのエンティティを添付して合計額の合計が上限を超えた場合、にはの例外を挿入できませんでした。 私は問題が何であるか把握できません。

+1

Hibernateは、クエリを実行する前にセッションをフラッシュします。 Stacktraceは、フラッシュ中にエラーが発生したことを明確に示しています。 – axtavt

+1

Stacktraceが更新が実行されていることを示すので、あなたの問題は 'select sum(...)'を実行できません。更新はこのHSQLの結果として実行された可能性がありますが、これはデータベースがエラーを出した文ではありません。 –

+0

ありがとうございます。そうだった。以前のアップデートが原因でした! – Atticus

答えて

0

私は最初の属性名は、単に削除されるのではなく、entity.parent_identity.deletedと思われます。何かのような...

select sum(entity.totalPrice) from Entity entity where entity.parent_id = :parentId and entity.deleted is null 

ことになって 最後のクエリは、PARENT_ID属性名が正しいことを確認してください。

関連する問題