Buscar en este blog

Chris Gerdes: The future race car -- 150mph, and no driver

Se ha producido un error en este gadget.

martes, 8 de febrero de 2011

PostgreSql 9 Auto ID (serial) y Java Persistence Api

El JPA, facilita las consulta y actualizaciones de registros en la Base de Datos.

Supongamos que estamos usando postgres 9 y tenemos una tabla, donde el campo clave es ID y es de tipo Serial. Este tipo de datos es un integer que se genera automaticamente con una secuencia definida.

Normalmente, cuando se hace un insert a una tabla que tiene este tipo de datos, a este campo ID de tipo de Dato Serial no se le asignan valores ya que se generan automaticamente por la Base de Datos.

Desde el Netbeans, Usando JPA Con EclipseLink, esto es un problema. Cuando se intenta insertar un registro sin el campo ID (que como es el campo clave tiene la especificacion "NULL = FALSE") genera un error porque no se ha especificado el valor para el campo ID.

Para hacerle entender a java que este ID esta vacio porque se genera automaticamente en la BD y no genere la excepcion, hay que hacer lo siguiente:


Se deben agregar las anotaciones @GeneratedValue y @SequenceGenerator. El nombre de la secuencia es el que se crea en postgres.