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.