Saltar al contenido

GenerationType.AUTO vs GenerationType.IDENTITY en hibernación

No dejes de divulgar nuestra página y códigos en tus redes sociales, necesitamos de tu ayuda para ampliar esta comunidad.

Solución:

¿Cómo podría “funcionar correctamente” (no define información básica como lo que quiere decir con eso) con Oracle? No veo la relevancia de AUTO a su pregunta, eso simplemente permite que una implementación elija lo que quiere usar.

IDENTITY“(según JPA javadocs y especificaciones, a lo que debería referirse) significa autoincremento. No existe tal concepto en Oracle, pero sí en MySQL, SQLServer y algunos otros. Esperaría que cualquier implementación JPA decente marque un error incluso al intentar tal cosa.

Oracle permitiría “SEQUENCE“, o “TABLE“estrategias a utilizar sin embargo

Citando Java Persistencia/Identidad y Secuencia:

Identidad usos de secuenciación columnas especiales de IDENTIDAD en la base de datos para permitir que la base de datos asigne automáticamente una identificación al objeto cuando se inserta su fila. Las columnas de identidad son compatibles con muchas bases de datos, como MySQL, DB2, SQL Server, Sybase y Postgres. Oracle no admite columnas de IDENTIDAD, pero se pueden simular mediante el uso de disparadores y objetos de secuencia.

así que prefiero usar SECUENCIA en lugar de

Los objetos de secuencia utilizan objetos de base de datos especiales para generar identificadores. Los objetos de secuencia solo se admiten en algunas bases de datos, como Oracle, DB2 y Postgres. Por lo general, un objeto SECUENCIA tiene un nombre, un INCREMENTO y otras configuraciones de objeto de base de datos. Cada vez que se selecciona .NEXTVAL, la secuencia se incrementa en INCREMENT.

Ejemplo :

@Entity
public class Employee 
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="EMP_SEQ")
    @SequenceGenerator(name="EMP_SEQ", sequenceName="EMP_SEQ", allocationSize=100)
    private long id;
    ...

Recuerda algo, que tienes concesión de valorar esta crónica si chocaste tu inconveniente .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *