lunes, 27 de abril de 2015

Inserts con clave primaria autoincremental en Hibernate y SQL Server

Algunas veces me he encontrado que teniendo que realizar un insert autoincremental en una Base de Datos SQL Server, el típico session.save(Object) ha fallado y no sabemos porque. Para eso utilizo el siguiente método como alternativa para realizarlos, 


En primer lugar defino la base de datos con el id autoincremental :


Una vez hecho esto, en vez de hacerlo con el típico método save, lo hago ejecutando una query des de hibernate, des de la clase DAO creada :

public int insertInsertHibernateTest(HibTest test){
int id=0;
try{
iniciaOperacion();
Query query = sesion.createSQLQuery("INSERT INTO HibTest (nom) VALUES ('"+test.getNom()+"')");
id = query.executeUpdate();
tx.commit();
}catch(HibernateException he){
manejaExcepcion(he); 
       throw he;
}finally{
sesion.close();
}
return id;
}

Donde el id que retornará el método es el número de lineas que han sido modificadas.

El xml de mapeo quedaría de la siguiente manera :


   
Con esto ya tendremos el insert hecho de un nuevo registro, delegando el autoincremento de la clave primaria a la base de datos

No hay comentarios:

Publicar un comentario