Hibernate продолжает пытаться обновить, когда он должен вставить и завершить сброс () - PullRequest
0 голосов
/ 07 декабря 2018

Когда я собираюсь сохранить объект, который имеет составной идентификатор, была выдана следующая ошибка.Это произошло в oracle sql 12c сервер, но не на сервере 11g.

Blockquote org.hibernate.StaleStateException: пакетное обновление вернуло неожиданное количество строк из обновления [0];фактическое количество строк: 0;ожидается: 1 в org.hibernate.jdbc.Expectations $ BasicExpectation.checkBatched (Expectations.java:85) в org.hibernate.jdbc.Expectations $ BasicExpectation.verifyOutcome (Expectations.java:70) в org.hibernate.jdbc.BatchingBatcher.checkRowCounts (BatchingBatcher.java:90) в org.hibernate.jdbc.BatchingBatcher.doExecuteBatch (BatchingBatcher.java:70) в org.hibernate.jdbc.AbstractBatcher.executeBatch (AbstractBatcher.java:268) в org.hb.prepareStatement (AbstractBatcher.java:114) в org.hibernate.jdbc.AbstractBatcher.prepareStatement (AbstractBatcher.java:109) в org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement (AbstractBatcher.java:24h) илилица.в org.hibernate.action.EntityUpdateAction.execute (EntityUpdateAction.java:114) в org.hibernate.engine.ActionQueue.execute (ActionQueue.java:268) в org.hibernate.engine.ActionQueue.executeActions (ActionQueue.java:2hiber.giber или at)..ActionQueue.executeActions (ActionQueue.java:180) в org.hibernate.event.def.AbstractFlushingEventListener.performExecutions (AbstractFlushingEventListener.java:321) в org.hibernate.event.def.DefaultFlushEventLushEventLForg.hibernate.impl.SessionImpl.flush (SessionImpl.java:1206) .. ..

Когда я проверяю трассировку, я обнаруживаю, что в спящем режиме запускается запрос на вставку, а после этого запускается запрос на обновление длята же запись с теми же значениями.

Я определил составной ключ следующим образом.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="package.of.the.class">
    <class name="ClassName"  table="TABLE_NAME">
        <composite-id>
            <key-property name="variable1_string" column="col1" />
            <key-property name="variable2_string" column="col2" />
            <key-property name="variable3_date" column="col3" />
            <key-property name="variable4_date" column="col4" />
            <key-property name="variable5_string" column="col5" />
        </composite-id>

        other properties...

    </class>

</hibernate-mapping>

Я проверял значения, когда записи сохраняются отладчиком, но не было повторяющихся значений для столбцов идентификаторов.

Ниже приведены версии библиотеки.

  • Hibernate 3.5
  • ojdbc6
  • spring-aop 4.3.1
  • spring-core 4.3.1
  • spring-jdbc4.3.1
  • spring-orm 3.2.2
  • Oracle sql server 12c

Пожалуйста, кто-нибудь, скажите, что пошло не так?

...