Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Hibernate-Sequenz auf Orakel, @GeneratedValue (Strategie =GenerationType.AUTO)

Diese Anmerkungen erzeugen nicht zwei Sequenzen, sondern nur eine. Ist das richtig/erwartet?

Das ist das erwartete Verhalten. Bei Verwendung von @GeneratedValue(strategy = GenerationType.AUTO) , wählt der JPA-Anbieter eine geeignete Strategie für die jeweilige Datenbank aus. Im Fall von Oracle ist dies SEQUENCE, und da Sie nichts angegeben haben, verwendet Hibernate eine einzelne globale Sequenz namens hibernate_sequence .

Ist das richtig? Nun, ich weiß nicht, es hängt von Ihren Bedürfnissen ab. Nur für den Fall, der standardmäßige Maximalwert für eine Oracle-Sequenz ist 1E+27 oder 1.000.000.000.000.000.000.000.000.000. Das reicht vielen.

Jetzt ist es möglich, GenerationType.AUTO zu verwenden und immer noch den Namen der Sequenz kontrollieren, wenn die Datenbank Sequenzen verwendet:

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