我收到了Web应用程序(JBoss,Turbine,Hibernate)实时部署的例外情况。我无法重现异常,因此我无法修复该错误。 以下是我得到的例外情况:
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时,我得到无法更新错误:
select sum(entity.totalPrice) from Entity entity where entity.parent.id = :parentId and deleted is null
多个实体属于一个父母。 这个hql是更大的更新过程的一部分。我需要使用totalPrices的总和来更新另一个实体。是否有可能无法更新是指更新过程? 我不认为是这种情况,因为错误发生在执行更新之前。更确切地说,在包含hql的Query对象上调用list()方法时会发生异常。
我尝试使用设置为null的实体的totalPrice重现异常,但这不会产生任何异常。如果我有很多实体附加到同一个父级并且其totalPrice的总和超过限制,则会得到无法插入异常。 我无法弄清楚问题是什么。
答案 0 :(得分:0)
我认为第一个属性名称应该是entity.parent_id
和entity.deleted
,而不是简单地删除。
最终的查询应该是... ...
select sum(entity.totalPrice) from Entity entity where entity.parent_id = :parentId and entity.deleted is null
确保parent_id属性名称正确。