2

休止状態を使用してレコードを削除しようとすると、この例外が発生します。

org.hibernate.jdbc.BatchedTooManyRowsAffectedException: バッチ更新が更新から予期しない行数を返しました [0]; 実際の行数: 9; 予想: 1

別のテーブルのレコードを更新するエンティティを使用しています(1対多の関係があります-1つの「プライマリ」オブジェクトと別のテーブルの「セカンダリ」オブジェクトのリスト)。私が実施している設定は、他のテーブルを更新しようとしています。これは create メソッドと update メソッドでは問題なく機能しましたが、オブジェクトを削除しようとすると、BatchedTooManyRowsAffectedException 例外が発生しました。

なぜそれが起こっているのですか?

org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:95)
org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:70)
org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:47)
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2691)
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2895)
org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:97)
org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:260)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
$Proxy679.flush(Unknown Source)

SqlServer 2008 を使用しています。

     <hibernate-mapping>
<class name="com.send.ReportStock" table="COM_REPORT_STOCK">


    <id name="reportID" type="long">
        <column name="ReportID" />
        <generator class="assigned" />
    </id>

    <property name="Stock" type="java.math.BigDecimal">
        <column name="Stock" scale="9" not-null="true" />
    </property>
    <property name="Live" type="java.math.BigDecimal">
        <column name="Live" scale="9" not-null="true" />
    </property>


    <property generated="never" lazy="false" name="NotLiveStatic"
        type="java.lang.String">
        <column name="NotLiveStatic" />
    </property>


</class>
  </hibernate-mapping>

クラスコード:

 ReportStock reportStock= this.getReportStock(reportId);
 session.get().delete(reportStock);
 session.get().flush();
4

0 に答える 0