休止状態を使用して 1 対 1 のマッピングを実行して DB に情報を挿入しようとしていますが、試行するたびにこのエラーが発生します。
Caused by: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:85)
at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:70)
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:90)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:185)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1217)
at org.springframework.orm.hibernate3.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:145)
... 12 more
これが私の client.hbm.xml ファイルです。
<hibernate-mapping>
<class name="register.Client" table="client" lazy="false">
<id name="clientId" type="string" column="CLIENT_ID"
length="255">
<generator class="increment"></generator>
</id>
<property name="address" type="string" column="ADDRESS"
length="255" />
<property name="email" type="string" column="EMAIL"
length="255" />
<property name="username" type="string" column="USERNAME"
unique="true">
</property>
<!-- Associations -->
<!-- bi-directional one-to-one association to Login -->
<one-to-one name="login" class="login.UsrPwd" lazy="false"
outer-join="auto" />
</hibernate-mapping>
ここに私のlogin.hbm.xmlファイルがあります
<hibernate-mapping>
<class name="login.UsrPwd" table="login">
<id name="username" type="string" column="USER_NAME"> </id>
<property name="password" column="PASSWORD" type="string"/>
<property name="type" column="TYPE_ID" type="int"></property>
<one-to-one name="consultantInfo" class="register.ConsultantInfo"
cascade="all" />
<!-- bi-directional one-to-one association to Client -->
<one-to-one name="client" class="register.Client" cascade="all"/>
</class>
</hibernate-mapping>
関数を実行して情報をデータベースに追加すると、これが得られる SQL です。
Hibernate: insert into login (PASSWORD, TYPE_ID, USER_NAME) values (?, ?, ?)
Hibernate: update client set ADDRESS=?, EMAIL=?, USERNAME=? where CLIENT_ID=?
行がまだ存在しないため、2番目のものは更新されるべきではないと思います。そのため、取得している例外がスローされています。なぜこれを行っているのか、私にはわかりません。助けていただければ幸いです。
さらに情報が必要な場合はお知らせください。提供できます