Als u automatisch de id
. wilt genereren , geef er dan geen, ook al is het null
. Dus verwijder de id
van addProduect
methode:
@Override
public void addProduct(String description, double price, Date date) {
jdbcTemplate.update("INSERT INTO products values(?, ?, ?)", description, price, date);
}
Maak ook uw id
veld auto-increment
, zoals in deze vraag
.
Of wijzig de addProduct
methode en gebruik EntityManager#persist
methode:
@Override
public void addProduct(Product product) {
entityManager.persist(product);
}
Over de fout:
Aangezien uw formulier de id
. niet heeft waarde van de klant, de /newproduct
eindpunt zou een Product
hebben met null
als zijn id
waarde:
@RequestMapping(value = "/newproduct", method = RequestMethod.POST)
public ModelAndView submitForm(@ModelAttribute("product") Product product) { ... }
Dan geef je deze null
door waarde als de parameter voor de addProduct
methode:
prDao.addProduct(product.getId(), ...)
En tot slot addProduct
zou proberen die null
. op te slaan waarde als de waarde van de Primaire Sleutel , die een Niet-Null . heeft beperking, dus je hebt die fout.
Gebruik ook Entiteit objecten als communicatiemiddel met cliënt, b.v. Product
, is geen goede gewoonte. Probeer enkele aanvullende abstracties zoals formulieren of DTO's te definiëren en deze te gebruiken voor het afhandelen van formulieren of het samenstellen van antwoorden.