웹 응용 프로그램 (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() 메서드가 호출 될 때 발생합니다.
null로 설정된 엔터티의 totalPrice 예외를 재현하려고 시도했지만 예외가 발생하지 않았습니다. 동일한 상위 항목에 많은 항목이 연결되어 있고 총액의 합계가 한도를 초과하는 경우 을 삽입 할 수 없으므로 예외를 삽입 할 수 있습니다. 문제가 무엇인지 알 수 없습니다.
하이버 네이트는 쿼리를 실행하기 전에 세션을 플러시한다. Stacktrace는 플러시 중에 오류가 발생했다고 분명하게 말합니다. – axtavt
stacktrace에서 업데이트가 수행되고 있음을 보여주기 때문에 문제가'select sum (...) '을 실행할 수 없습니다. 업데이트는이 HSQL의 결과로 실행되었을 수도 있지만 이것은 데이터베이스가 오류를 던진 문장이 아닙니다. –
감사합니다. 그것이 사실이었습니다. 이전 업데이트로 인해 발생했습니다! – Atticus