Actualización de mapeo uno a uno de Hibernate en lugar de insertar y lanzar StaleStateException

Estoy tratando de hacer un mapeo uno a uno usando hibernación para insertar información en la base de datos, pero cada vez que lo intento, aparece este error.

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

Aquí está mi archivo 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>

Aquí está mi archivo 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>

cuando ejecuto mi función para agregar la información a la base de datos, este es el SQL que obtengo.

 Hibernate: insert into login (PASSWORD, TYPE_ID, USER_NAME) values (?, ?, ?)
 Hibernate: update client set ADDRESS=?, EMAIL=?, USERNAME=? where CLIENT_ID=?

No creo que se suponga que la segunda se actualice porque la fila aún no existe y es por eso que arroja la excepción que estoy recibiendo. No tengo idea de por qué está haciendo esto, cualquier ayuda sería apreciada.

Si necesita más información, hágamelo saber y puedo proporcionársela.

preguntado el 01 de julio de 12 a las 23:07

Parece que necesita crear y confirmar el objeto del cliente antes del inicio de sesión. ¿Está creando un objeto de inicio de sesión con un cliente asociado, pero solo está confirmando/guardando el objeto de inicio de sesión? -

Me lo imaginé. Publicaré la respuesta cuando tenga tiempo. Fue solo un pequeño error estúpido que tuve en mi código. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.