sql >> Database teknologi >  >> RDS >> PostgreSQL

Generer automatisk id i Spring MVC

Hvis du automatisk vil generere id , så giv ikke en, selv den er null . Så fjern id fra addProduect metode:

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

Lav også dit id felt auto-increment , som i dette spørgsmål .

Eller skift addProduct metode og brug EntityManager#persist metode:

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

Om fejlen:

Da din formular ikke tager id værdi fra klienten, /newproduct slutpunkt ville have et Product med null som dens id værdi:

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

Så sender du denne null værdi som parameter til addProduct metode:

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

Og endelig addProduct ville prøve at gemme den null værdi som værdien af ​​den Primære nøgle , som har en Ikke-Null begrænsning, så du har den fejl.

Også ved at bruge Entity objekter som kommunikationsmiddel med klient, f.eks. Product , er ikke en god praksis. Prøv at definere nogle hjælpeabstraktioner som formularer eller DTO'er og brug dem til formularhåndtering eller svarsamling.




  1. MySQL Trigger til at indsætte data i forskellige DB

  2. SQL-sætning for kun at slette én række ud af dubletter

  3. Brug af Oracle-databaselinks uden ulæselig dynamisk SQL

  4. At-Sign in SQL-sætning før kolonnenavn