sql >> Databasteknik >  >> RDS >> PostgreSQL

Generera id automatiskt i Spring MVC

Om du automatiskt vill generera id , ange då inte en, även om den är null . Så ta bort id från addProduect metod:

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

Skapa även ditt id fältet auto-increment , som i den här frågan .

Eller ändra addProduct metod och använd EntityManager#persist metod:

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

Om felet:

Eftersom ditt formulär inte tar id värde från klienten, /newproduct slutpunkten skulle ha en Product med null som dess id värde:

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

Sedan skickar du denna null värde som parameter till addProduct metod:

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

Och slutligen addProduct skulle försöka spara den null värde som värdet på Primärnyckeln , som har en Non-Null begränsning, så du har det felet.

Använder även Entity objekt som kommunikationsmedel med klient, t.ex. Product , är inte en bra praxis. Försök att definiera några extra abstraktioner som formulär eller DTO och använd dem för formulärhantering eller svarssammansättning.




  1. Hur skapar man ett ja/nej booleskt fält i SQL-servern?

  2. Finns det ett enklare sätt att hitta MODE(S) för vissa värden i MySQL

  3. TypeScript-fel när du använder Op.between i Sequelize with Dates

  4. Fixa "ERROR 1222 (21000):De använda SELECT-satserna har ett annat antal kolumner" när du använder UNION i MySQL