PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Genera automaticamente l'ID in Spring MVC

Se vuoi generare automaticamente l'id , quindi non fornirne uno, anche se è null . Quindi, rimuovi l'id da addProduect metodo:

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

Inoltre, crea il tuo id campo auto-increment , come in questa domanda .

Oppure, cambia il addProduct metodo e usa EntityManager#persist metodo:

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

Informazioni sull'errore:

Poiché il tuo modulo non accetta l'id valore dal cliente, il /newproduct l'endpoint avrebbe un Product con null come suo id valore:

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

Quindi passi questo null valore come parametro per addProduct metodo:

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

E infine addProduct proverei a salvare quel null value come valore della Chiave primaria , che ha un Non Null vincolo, quindi hai quell'errore.

Inoltre, utilizzando Entità oggetti come mezzo di comunicazione con il cliente, ad es. Product , non è una buona pratica. Prova a definire alcune astrazioni ausiliarie come Moduli o DTO e usale per la gestione dei moduli o l'assemblaggio delle risposte.