PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Buat id secara otomatis di Spring MVC

Jika Anda ingin membuat id secara otomatis , maka jangan berikan satu, bahkan itu null . Jadi, hapus id dari addProduect metode:

@Override
public void addProduct(String description, double price, Date date) {
    jdbcTemplate.update("INSERT INTO products values(?, ?, ?)", description, price, date);
}

Buat juga id bidang auto-increment , seperti dalam pertanyaan ini .

Atau, ubah addProduct metode dan gunakan EntityManager#persist metode:

@Override
public void addProduct(Product product) {
    entityManager.persist(product);
}

Tentang kesalahan:

Karena formulir Anda tidak menggunakan id nilai dari klien, /newproduct titik akhir akan memiliki Product dengan null sebagai id nilai:

@RequestMapping(value = "/newproduct", method = RequestMethod.POST)
public ModelAndView submitForm(@ModelAttribute("product") Product product) { ... }

Kemudian Anda melewati null . ini nilai sebagai parameter ke addProduct metode:

prDao.addProduct(product.getId(), ...)

Dan akhirnya addProduct akan mencoba menyimpan null . itu nilai sebagai nilai Kunci Utama , yang memiliki Non-Null kendala, jadi Anda mendapatkan kesalahan itu.

Juga, menggunakan Entitas objek sebagai sarana komunikasi dengan klien, mis. Product , bukan praktik yang baik. Coba definisikan beberapa abstraksi tambahan seperti Formulir atau DTO dan gunakan untuk penanganan formulir atau perakitan respons.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kontainer Postgres lumpuh dengan `file database tidak kompatibel dengan server` setelah gambar kontainer diperbarui ke yang terbaru

  2. sqlalchemy simetris banyak ke satu persahabatan

  3. AWS RDS Postgresql Pgadmin - Server tidak mendengarkan

  4. Pembaruan massal di postgreSQL menggunakan unnest

  5. Tanda kurung siku pada nama tabel/kolom tidak didukung?