sql >> Databasteknik >  >> RDS >> Oracle

Vilolägessekvens på oracle, @GeneratedValue(strategi =GenerationType.AUTO)

Dessa anteckningar skapar inte två sekvenser, bara en. Är detta korrekt/förväntat?

Det är det förväntade beteendet. När du använder @GeneratedValue(strategy = GenerationType.AUTO) , kommer JPA-leverantören att välja en lämplig strategi för den specifika databasen. I fallet med Oracle kommer detta att vara SEQUENCE och eftersom du inte angav något kommer Hibernate att använda en enda global sekvens som heter hibernate_sequence .

Är detta rätt? Tja, jag vet inte, det beror på dina behov. För säkerhets skull är standardmaxvärdet för en Oracle-sekvens 1E+27, eller 1,000,000,000,000,000,000,000,000,000. Det räcker för många.

Nu är det möjligt att använda GenerationType.AUTO och fortfarande kontrollera namnet på sekvensen när databasen använder sekvenser:

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


  1. Optimistisk samtidighet:IsConcurrencyToken och RowVersion

  2. Hur ändrar jag en MySQL-kolumn för att tillåta NULL?

  3. Hur Acosd() fungerar i PostgreSQL

  4. SQL Fyll i tabell med slumpmässiga data