PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Automatyczne generowanie identyfikatora w Spring MVC

Jeśli chcesz automatycznie wygenerować id , to nie podawaj, nawet jeśli jest null . Usuń więc id z addProduect metoda:

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

Ponadto zrób swój id pole auto-increment , jak w tym pytanie .

Lub zmień addProduct metody i użyj EntityManager#persist metoda:

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

O błędzie:

Ponieważ Twój formularz nie przyjmuje id wartość od klienta, /newproduct punkt końcowy miałby Product z null jako jego id wartość:

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

Następnie przekazujesz to null wartość jako parametr addProduct metoda:

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

I wreszcie addProduct spróbuje zapisać to null wartość jako wartość klucza podstawowego , który ma Niepusty ograniczenie, więc masz ten błąd.

Również za pomocą Entity obiekty jako środek komunikacji z klientem, m.in. Product , nie jest dobrą praktyką. Spróbuj zdefiniować pewne abstrakcje pomocnicze, takie jak formularze lub DTO, i użyj ich do obsługi formularzy lub asemblacji odpowiedzi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie funkcji w Postgresql, która nie zwraca wartości złożonych

  2. Wybierz liczbę odpowiedzi MCQ na podstawie odpowiedzi na poprzednie pytanie

  3. PostgreSQL, min, max i liczba dat w zakresie

  4. Wywołaj funkcję z typem złożonym jako argumentem z natywnego zapytania w jpa

  5. Wybierz zapytanie z limitem przesunięcia jest zbyt wolne