Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara membubuhi keterangan bidang peningkatan otomatis MYSQL dengan anotasi JPA

Untuk menggunakan AUTO_INCREMENT MySQL kolom, Anda seharusnya menggunakan IDENTITY strategi:

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

Yang akan Anda dapatkan saat menggunakan AUTO dengan MySQL:

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

Yang sebenarnya setara dengan

@Id @GeneratedValue
private Long id;

Dengan kata lain, pemetaan Anda harus berfungsi. Tapi Hibernate harus menghilangkan id kolom dalam pernyataan penyisipan SQL, dan itu tidak. Pasti ada semacam ketidakcocokan di suatu tempat.

Apakah Anda menentukan dialek MySQL dalam konfigurasi Hibernate Anda (mungkin MySQL5InnoDBDialect atau MySQL5Dialect tergantung pada mesin yang Anda gunakan)?

Juga, siapa yang membuat tabel? Bisakah Anda menunjukkan DDL yang sesuai?

Tindak lanjut: Saya tidak dapat mereproduksi masalah Anda. Menggunakan kode Anda entitas dan Anda DDL, Hibernate menghasilkan SQL berikut (yang diharapkan) dengan MySQL:

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

Perhatikan bahwa id kolom tidak ada dari pernyataan di atas, seperti yang diharapkan.

Singkatnya, kode Anda, definisi tabel, dan dialeknya benar dan koheren, itu harus berfungsi. Jika bukan untuk Anda, mungkin ada sesuatu yang tidak sinkron (lakukan build bersih, periksa kembali direktori build, dll) atau ada yang salah (periksa log apakah ada yang mencurigakan).

Mengenai dialek, hanya perbedaan antara MySQL5Dialect atau MySQL5InnoDBDialect adalah bahwa nanti menambahkan ENGINE=InnoDB ke objek tabel saat membuat DDL. Menggunakan satu atau yang lain tidak mengubah SQL yang dihasilkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Database Load Balancing di Cloud - MySQL Master Failover dengan ProxySQL 2.0:Bagian Satu (Penerapan)

  2. Akses Java JDBC ditolak untuk pengguna

  3. Replikasi Asynchronous Failover Otomatis di MySQL 8.0.22

  4. Doctrine 2 dan tabel tautan Banyak-ke-banyak dengan bidang tambahan

  5. Bagaimana saya bisa mengakses baris perintah MySQL dengan XAMPP untuk Windows?