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;