Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak dodawać adnotacje do pola autoinkrementacji MYSQL za pomocą adnotacji JPA?

Aby użyć MySQL AUTO_INCREMENT kolumna, powinieneś użyć IDENTITY strategia:

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;

Co otrzymasz, używając AUTO z MySQL:

@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

Co w rzeczywistości jest odpowiednikiem

@Id @GeneratedValue
private Long id;

Innymi słowy, twoje mapowanie powinno działać. Ale Hibernate powinien pominąć id w instrukcji SQL INSERT, a tak nie jest. Gdzieś musi być jakieś niedopasowanie.

Czy określiłeśdialekt MySQL w konfiguracji Hibernate (prawdopodobnie MySQL5InnoDBDialect lub MySQL5Dialect w zależności od używanego silnika)?

A kto stworzył stół? Czy możesz pokazać odpowiedni kod DDL?

Kontynuacja: Nie mogę odtworzyć twojego problemu. Korzystanie z kodu swojego podmiot i Twój DDL, Hibernate generuje następujący (oczekiwany) SQL z MySQL:

insert 
into
    Operator
    (active, password, username) 
values
    (?, ?, ?)

Zauważ, że id kolumna jest nieobecna w powyższym oświadczeniu, zgodnie z oczekiwaniami.

Podsumowując, Twój kod, definicja tabeli i dialekt są poprawne i spójne, powinno działać. Jeśli tak nie jest, być może coś nie jest zsynchronizowane (wykonaj czystą kompilację, dwukrotnie sprawdź katalog kompilacji itp.) lub coś innego jest po prostu nie tak (sprawdź logi pod kątem podejrzanych).

Jeśli chodzi o dialekt, jedyny różnica między MySQL5Dialect lub MySQL5InnoDBDialect jest to, że później dodaje ENGINE=InnoDB do obiektów tabeli podczas generowania kodu DDL. Użycie jednego lub drugiego nie zmienia wygenerowanego kodu SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak tworzyć i manipulować bazami danych SQL za pomocą Pythona

  2. Menu drzewa budowania PHP / MySQL

  3. Jak włączyć mysqlnd dla php?

  4. Jak wyświetlić datę w formacie ISO 8601 za pomocą PHP

  5. Migracja bazy danych MySQL z CloudSQL do AWS RDS