GlassFish + postgres - @SequenceGenerator sa nevytvori
Jaroslav Hurdes
java na ataco.cz
Pátek Únor 19 14:39:56 CET 2010
Zkuste to takto:
@Entity
@SequenceGenerator(name = "MYSEQUENCE", sequenceName = "mysequence")
public class ClientRequest implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MYSEQUENCE")
@Column(name = "id", nullable = false)
private Long id;
Anotace definujici generator je u tridy a u id je pouze odkaz na ni pomoci jmena. Ja to takto pouzivam a je vse OK.
Jaroslav Hurdes
Dne 19.2.2010 14:32, Dusan Zatkovsky napsal(a):
> Ahoj.
>
> Laborujem s postgres + glassfish a persistenciou. Tabulky si zatial nechavam
> generovat persistentnou vrstvou.
>
> Moj problem je, ze sa nevytvara sequence, napriek tomu, ze som to anotoval.
>
> Utrzky kodu a konfiguracie:
>
> @Entity
> public class ClientRequest implements Serializable {
>
> private static final long serialVersionUID = 1L;
> @Id
> @SequenceGenerator(name = "MYSEQUENCE", sequenceName = "mysequence")
> @GeneratedValue(strategy = GenerationType.SEQUENCE, generator
> = "MYSEQUENCE")
> @Column(name = "id", nullable = false)
> private Long id;
>
> <persistence-unit name="appVersionPU" transaction-type="JTA">
> <provider>oracle.toplink.essentials.PersistenceProvider</provider>
> <jta-data-source>jdbc/test</jta-data-source>
> <exclude-unlisted-classes>false</exclude-unlisted-classes>
> <properties>
> <property name="toplink.logging.level" value="FINER"/>
> <property name="toplink.target-database" value="PostgreSQL"/>
> <property name="toplink.ddl-generation" value="create-tables"/>
> </properties>
> </persistence-unit>
>
>
> Log z aplikacneho servera:
>
> ... connecting(DatabaseLogin(
>
> ... CREATE TABLE CLIENTREQUEST (id SERIAL NOT NULL, CUSTOMERCOMPANY
> VARCHAR(255), CUSTOMERSERIAL VARCHAR(255), CUSTOMERNAME VARCHAR(255), APPNAME
> VARCHAR(255), CLIENTIP VARCHAR(255), PRIMARY KEY (id))
>
> ... INSERT INTO CLIENTREQUEST (CUSTOMERCOMPANY, CUSTOMERSERIAL, CUSTOMERNAME,
> APPNAME, CLIENTIP) VALUES (?, ?, ?, ?, ?)
>
> ...select currval('mysequence')
>
> Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0 (Build 36
> (02/17/2007))): oracle.toplink.essentials.exceptions.DatabaseException
> Internal Exception: org.postgresql.util.PSQLException: ERROR:
> relation "mysequence" does not existError Code: 0
> Call:select currval('mysequence')
> Query:ValueReadQuery()
>
>
> Moja otazka znie, preco ta sekvencia nebola vytvorena. Tusi niekto?
>
> Diky
>
>
Další informace o konferenci Konference