sql >> Database teknologi >  >> RDS >> Oracle

Dvalesekvens på oracle, @GeneratedValue(strategi =GenerationType.AUTO)

Disse annoteringer skaber ikke to sekvenser, kun én. Er dette korrekt/forventet?

Det er den forventede adfærd. Når du bruger @GeneratedValue(strategy = GenerationType.AUTO) , vil JPA-udbyderen vælge en passende strategi for den bestemte database. I tilfælde af Oracle vil dette være SEQUENCE, og da du ikke har angivet noget, vil Hibernate bruge en enkelt global sekvens kaldet hibernate_sequence .

Er dette korrekt? Jeg ved det ikke, det afhænger af dine behov. For en sikkerheds skyld er standard maksimumværdien for en Oracle-sekvens 1E+27 eller 1.000.000.000.000.000.000.000.000.000. Det er nok for mange.

Nu er det muligt at bruge GenerationType.AUTO og stadig kontrollere navnet på sekvensen, når databasen bruger 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. Sådan reduceres størrelsen af ​​en datafil i SQL Server (T-SQL)

  2. MySQL's HEX() og UNHEX() ækvivalent i Postgres?

  3. Patchhistoriktabeller i Oracle Apps (11i/R12.1/R12.2)

  4. Indsamlingsmetoder:FØRSTE &SIDSTE funktioner i Oracle-databasen