Posted By: Micval (Vsude dobre, v CR taky) on 'CZprogram'
Title: Jak korektne generovat id - Pg, Hibernate
Date: Tue Feb 27 16:19:57 2007
Maucta,
mam tu takovej neprijemnej problem s kombinaci Postgres-Hibernate.
(Predesilam, ze s hibernatem neumim a osobne to neprogramuju, jen se v
tom stouram.)
Rekneme, ze tohle je psano v souboru Uzivatel.java:
@Id
@Column(name="id_uzivatel", unique=true, nullable=false, insertable=true,
updatable=true)
@GeneratedValue( strategy=GenerationType.SEQUENCE,
generator="customer_id_sequence" )
@SequenceGenerator( name="customer_id_sequence",
sequenceName="uzivatel_id_uzivatel_seq", allocationSize=1 )
V databazi je tabulka uzivatel s PK id_uzivatel a sekvence
uzivatel_id_uzivatel_seq a jsou provazany pres default=nextval.
Ted z chovani aplikace jsem si tak nejak odvodil, ze hibernate si pri startu
nacte currval sekvence a pak si interne pri insertech pricita jednicku a
uklada do db sebou generovany id. Potud v poradku, problem je v tom, ze se pri
tom neupdatuje sekvence a kdyz tam pristoupim jinou aplikaci a udelam insert
"pres sekvenci", tak tato mi vygeneruje konfliktni id.
Otazka tedy zni, lze hibernatu rict, aby se laskave vykvajz na generovani
sekvenci a nechal to na databazi?
A nyni neco uplne jineho..