Обновление версии Hibernate 3 для DuplicateKeyException при сохранении или обновлении - PullRequest
0 голосов
/ 22 февраля 2019

Эта ошибка возникает при обновлении версии hibernate с 3.3.1GA до 3.6.10. Финал

Я обновляю приложение (JSP + spring 4.2 + hibernate + java 8), где мне нужночтобы выполнить редактирование и добавить функции и сохранить результат в двух таблицах, скажем, PriceSchedule и PriceScheduleItem.Отношения между этими двумя являются многими к одному.В моем родительском файле hbm я включил cascade = "all" через один-ко-многим (поле дочернего класса).

Я получаю данные из БД и при редактировании записи,если я не изменяю никакие страницы значений полей (в JSP), то это вызывает исключение следующим образом.

org.springframework.dao.DuplicateKeyException: a different object with the same identifier value was already associated with the session: [com.pstechnology.domain.PriceSchedule#124]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.pstechnology.domain.PriceSchedule#124]
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:678)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:416)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:416)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:379)
    at org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate(HibernateTemplate.java:782)
    at com.pstechnology.persistence.spring.dao.BaseDAOImpl.saveOrUpdate(BaseDAOImpl.java:81)
    at com.pstechnology.service.BaseService.saveOrUpdate(BaseService.java:55)
    at com.pstechnology.service.BaseService$$FastClassBySpringCGLIB$$61ce2679.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)
    at com.pstechnology.logging.ServiceMethodProfiler.profile(ServiceMethodProfiler.java:27)
    at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618)
    at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

Если я изменяю любые значения полей, то оно успешно сохраняется.

Использую объект команды для получения информации из JSP.Может ли кто-нибудь направить меня для решения этой ошибки.

К вашему сведению: 1) Отправляю объект домена hibernate в JSP, устанавливая его в объекте VO.2) Я не могу обновить версию спящего режима, так как в репозитории компании Maven нет последней версии спящего режима, и руководство не хочет тратить на это много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...