Když jsem s Java EE začínal, velmi dlouho jsem hledal, jak se nastaví autoincrement u pole v PostgreSQL.
Předpokládám, že máte vytvořenou databázi na PostgreSQL, ve které je pro příklad tabulka Lide, která obsahuje primání klíč id_clovek. K databázi máte nastavené připojení. Dále máte založenou Java EE Application, ve které jste dali New File / Persistence /Entity classes from database - a nechali jste si vytvořit soubory pro uvedenou tabulku.
Nyní máme v Source Packages (pokud jste nechali defaultní cestu) v nějakém package tyto soubory:
Lide.java a LideController.java, ve kterých uděláme následující úpravy.
Lide.java:
@Id @Basic(optional = false) @NotNull @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id_clovek") private Integer id_clovek;
LideController.java:
public String create() { try { // pro autoincrement current.setId_clovek(0); getFacade().create(current); JsfUtil.addSuccessMessage(ResourceBundle.getBundle("labels").getString("DiagnozaCreated")); return prepareCreate(); } catch (Exception e) { JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("labels").getString("PersistenceErrorOccured")); return null; } }
Pokud byste použili GenerationType.AUTO (jak se na mnohých fórech dočtete, zejména protože se většina fór zabývá MySQL), dostanete hlášku:
Error: A persistence error occurred.
Ta znamená, že se databázi něco nelíbí. Výše uvedený kód by měl tento problém odstranit.
Tento web jsem zakládal na střední, v roce 2008. Je zde hlavně archiv mé tvorby.
Aktuální věci publikuji kvůli úspoře času na Twitter.
Honza
"Čas je materiál, ze kterého se vyrábí život."