Hibernate DataException:无法更新

时间:2010-11-23 14:07:52

标签: java hibernate

我收到了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的总和超过限制,则会得到无法插入异常。 我无法弄清楚问题是什么。

1 个答案:

答案 0 :(得分:0)

我认为第一个属性名称应该是entity.parent_identity.deleted,而不是简单地删除。 最终的查询应该是... ...

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

确保parent_id属性名称正确。