sql >> Base de Datos >  >> RDS >> Oracle

Secuencia de hibernación en Oracle, @GeneratedValue (estrategia =GenerationType.AUTO)

Estas anotaciones no crean dos secuencias, solo una. ¿Es esto correcto/esperado?

Ese es el comportamiento esperado. Al usar @GeneratedValue(strategy = GenerationType.AUTO) , el proveedor de JPA elegirá una estrategia adecuada para la base de datos en particular. En el caso de Oracle, será SEQUENCE y, dado que no especificaste nada, Hibernate usará una única secuencia global llamada hibernate_sequence .

¿Es esto correcto? Pues no sé, depende de tus necesidades. Por si acaso, el valor máximo predeterminado para una secuencia de Oracle es 1E+27, o 1,000,000,000,000,000,000,000,000,000. Eso es suficiente para muchos.

Ahora, es posible usar GenerationType.AUTO y seguir controlando el nombre de la secuencia cuando la base de datos usa secuencias:

@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")
private Long id;