sql >> Databáze >  >> RDS >> PostgreSQL

Automatické generování ID v Spring MVC

Pokud chcete automaticky vygenerovat id , pak žádný nezadávejte, i když je null . Odstraňte tedy id z addProduect metoda:

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

Udělejte si také id pole auto-increment , jako v této otázce .

Nebo změňte addProduct a použijte EntityManager#persist metoda:

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

O chybě:

Protože váš formulář nebere id hodnotu od klienta, /newproduct koncový bod by měl Product s null jako jeho id hodnota:

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

Potom předáte toto null hodnotu jako parametr do addProduct metoda:

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

A nakonec addProduct pokusí se uložit null hodnotu jako hodnotu Primárního klíče , který má Null omezení, takže máte tuto chybu.

Také pomocí Entity objekty jako prostředek komunikace s klientem, např. Product , není dobrá praxe. Zkuste definovat nějaké pomocné abstrakce, jako jsou formuláře nebo DTO, a použijte je pro manipulaci s formuláři nebo sestavování odpovědí.




  1. Jak zobrazit rozevírací seznam s předem vybranou možností

  2. Oracle ORA-00979 - není výraz GROUP BY

  3. MySql – Je primární klíč ve výchozím nastavení jedinečný?

  4. Modul Magento BestSeller – Shrnutí konfigurovatelných produktů a jejich opětovné přidání