Hola,

Tengo una base de datos que tiene configurados una serie de triggers y me surge un problema a la hora de insertar un elemento en una tabla.

La tabla "Registro" tiene una columna que es una FK a un elemento de otra tabla "Centro":

       <id name="id" type="string">

            <column name="id" length="10" />

            <generator class="assigned" />

        </id>

        <many-to-one name="centro" class="com.paquete.modelo.Centro" fetch="select" insert="false" update="false">

            <column name="centro_id" not-null="true" />

        </many-to-one>

El trigger, obtiene el elemento centro_id de la tabla "Centro" en función de unas condiciones de la query antes de insertar la fila en la tabla Registro.

En la implementación del DAO creo un objeto Registro con esa columna vacía, y cuando hago la llamada a:

 

this.getHibernateTemplate().saveOrUpdate(registro)

Obtengo la siguiente excepción:

 

ERROR [org.hibernate.util.JDBCExceptionReporter(78)] [main]  - <Field 'centro_id' doesn't have a default value>
2012-06-12 14:23:56,802 ERROR [org.hibernate.util.JDBCExceptionReporter(78)] [main]  - <Field 'centro_id' doesn't have a default value>
2012-06-12 14:23:56,804 ERROR [org.hibernate.event.def.AbstractFlushingEventListener(301)] [main]  - <Could not synchronize database state with session>
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update

Entiendo que es porque no ha dado tiempo a que se ejecute el trigger y por eso no tiene ningún valor. 

 

No sé qué puedo estar haciendo mal. ¿Alguien tiene alguna idea?

 

Gracias