Hibernate: не удалось обновить objectName - PullRequest
1 голос
/ 12 марта 2020

Вы можете перечислить причины, по которым я не могу сохранить / обновить эту сущность в моем проекте Hibernate:

ошибка выглядит следующим образом:

SEVERE: Could not synchronize database state with session
org.hibernate.exception.DataException: could not update: [org.game.model.heroChampion#123456]
    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:2360)
    at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2242)
    at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2542)
    at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)

и

org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.DataException: could not update: [org.game.model.heroChampion#123456]
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:634)
    at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:695)
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:566)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:540)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:510)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:310)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

This Объект является частью отношения «многие к одному» в БД. просто перечислите возможные причины, и я проверю свой код.

вещей, которые я пробовал.

  public void saveHeroChampion(final HeroChampion hero) {


        getHibernateTemplate().clear();

        getHibernateTemplate().refresh(hero);
        getHibernateTemplate().saveOrUpdate(sputumSmear); 
        getHibernateTemplate().flush();
    }

1 Ответ

1 голос
/ 12 марта 2020

Когда вы вызываете clear, он удаляет экземпляр hero из кэша сеанса, поэтому объект отсоединяется и больше не сохраняется. Попробуйте удалить эту строку.

...