sql >> Database >  >> RDS >> PostgreSQL

Automatisch id genereren in Spring MVC

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.




  1. hoe de grootte van een kolom te wijzigen

  2. Selecteer alleen de nieuwste gegroepeerde items

  3. Hoe controleer je of een MySQL-verbinding SSL-versleuteld is?

  4. Een mySQL ENUM specificeren in een Django-model