Mis tablas PostgreSQL tienen identificadores del tipo bigserial
, lo que significa que se generan en el momento en que se insertan las filas (y, por lo tanto, el valor de la columna del ID no se proporciona en la declaración INSERT
). Tengo dificultades para encontrar el valor correcto para el atributo <generator class="...">
en mi archivo de mapeo XML.¿Generador de id de Hibernate adecuado para la columna serial/bigserial de postgres?
El código siguiente es el más cercano que he encontrado que parece ser el más cercano para Postgres, pero sigue realizando un SELECT nextval(...)
en la secuencia antes de insertarlo (e incluye explícitamente el valor del campo de identificación en el inserto). Solo quiero que Hibernate no incluya el valor del campo de identificación, lo que permite a Postgres hacer su trabajo de generar el valor en sí.
<id name="id" column="id" type="java.lang.Long">
<generator class="sequence">
<param name="sequence">my_sequence_name</param>
</generator>
</id>
Para las nuevas versiones (JPA): http://stackoverflow.com/questions/4979746/mapping-postgresql-serial-type-with-hibernate-annotations –