Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Sekwencja hibernacji na oracle, @GeneratedValue(strategy =GenerationType.AUTO)

Te adnotacje nie tworzą dwóch sekwencji, tylko jedną. Czy to jest prawidłowe/oczekiwane?

To jest oczekiwane zachowanie. Podczas korzystania z @GeneratedValue(strategy = GenerationType.AUTO) , dostawca JPA wybierze odpowiednią strategię dla konkretnej bazy danych. W przypadku Oracle będzie to SEQUENCE, a ponieważ nic nie określiłeś, Hibernate użyje jednej globalnej sekwencji o nazwie hibernate_sequence .

Czy to jest poprawne? No nie wiem, to zależy od twoich potrzeb. Na wszelki wypadek domyślna maksymalna wartość dla sekwencji Oracle to 1E+27 lub 1 000 000 000 000 000 000 000 000 000. To wystarczy dla wielu.

Teraz można użyć GenerationType.AUTO i nadal kontrolować nazwę sekwencji, gdy baza danych używa sekwencji:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz użytkownika ze zmiennych łańcuchowych w bloku PL/SQL

  2. Jak połączyć się z bazą danych Oracle 11 z . internet

  3. Czy w ORACLE istnieje sposób na połączenie wielu wierszy w jeden, przy użyciu dwóch tabel, w których końcowe wartości są oddzielone przecinkami?

  4. Korzyści z nauki nowych systemów DB

  5. Kod intensywnie korzystający z asynchronicznych operacji we/wy działa wolniej niż kod nieasynchroniczny, dlaczego?