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;