JPA - seq_gen_sequence

5 respostas
L

Galera tou com um grande problema…
tou desenvolvendo uma aplicacao utilizando jpa…
realizo consultas, pego valores no banco…
porem o unico problema a na hora q tento inserir dados em qualquer tabela…dar o seguinte error:


[[color=red]TopLink Warning]: 2007.10.09 10:20:21.228–ClientSession(26285048)–Exception [TOPLINK-4002] (Oracle TopLink Essentials - 9.1 (Build b28)): oracle.toplink.essentials.exceptions.DatabaseException

Internal Exception: org.postgresql.util.PSQLException: ERROR: relation “seq_gen_sequence” does not existError Code: 0

Call:select currval(‘SEQ_GEN_SEQUENCE’)

Query:ValueReadQuery()

Exception in thread “main” javax.persistence.RollbackException: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 9.1 (Build b28)): oracle.toplink.essentials.exceptions.DatabaseException

Internal Exception: org.postgresql.util.PSQLException: ERROR: relation “seq_gen_sequence” does not existError Code: 0

Call:select currval(‘SEQ_GEN_SEQUENCE’)

Query:ValueReadQuery()

at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.commit(EntityTransactionImpl.java:106)

at oracle.toplink.essentials.internal.ejb.cmp3.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:45)

at controllers.PatientController.add(PatientController.java:42)

at facade.FacadeControllers.addPatient(FacadeControllers.java:62)[/color]

obs: consigo realizar consultas…soh nao consigo inserir dados em nenhuma tabela…e esse “seq_gen_sequence” nao existe no meu projeto!

por favor…preciso o mais rapido possivel de ajuda…
Aguardo…
Leurimar Lins

5 Respostas

edvaldo.santiago

Fala Leurimar…
Cara tenho uma pergunta para fazer… qual o Banco de Dados que vc está utilizando pq se vc estiver utilizando Postgres é necessário criar o sequence no banco.

Valeu.

L

Cara…tou usando o postgree sim…porem todas as sequences sao criadas…e quando eu faco essa sequence no banco…da o mesmo problema…
realmente naos ei como eu devo prosseguir!
=/

acdesouza

Para testar, você poderia mandar o Toplink criar o banco para você. Daí você compara com o que você tem e acerta as diferenças.

Para isso coloque no persistence.xml:

<property name="toplink.create-ddl-jdbc-file-name" value="create.sql"/> <property name="toplink.drop-ddl-jdbc-file-name" value="drop.sql"/> <property name="toplink.ddl-generation.output-mode" value="both"/>

Assim ele vai criar o banco e exportar os arquivos com os comandos DDL.

edvaldo.santiago

Seguinte lá vai a receita de bolo…
Na classe vc vai fazer o seguinte:

package br.com.vo;

import static javax.persistence.CascadeType.PERSIST;
import static javax.persistence.GenerationType.AUTO;
import static javax.persistence.TemporalType.DATE;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;

@Entity
@Table(schema="public")
public class Casa implements Serializable {
	@Id	
	@GeneratedValue(strategy=AUTO, generator = "casa_seq")
	@SequenceGenerator(name="casa_seq", sequenceName = "seq_casa")
	private Integer idcasa;

	@Column(name="dt_hj")
	@Temporal(DATE)
	private Date dtHj;

etc.....

E no banco seq_casa é o nome da sequencia.
Fazendo isso vai dar certinho o processo.
Quando vc tenta inserir um registro dentro do postgres ele primeiro consulta o Sequence e depois
grava… Se vc não tive configurado na classe qual sequence ele não vai deixar a gravação.
Se não der certo… por favor me avise… pq aí eu mando um projeto como exemplo.

Valeu … .fui…

Obs…
Se vc tiver incluindo 2 classes ao mesmo tempo como por exemplo One to One… é necessário fazer o sequence para as duas.

Fui.

L

agradeco Edvaldo.santiago…

deu certo aki!
obg a todos!

Criado 9 de outubro de 2007
Ultima resposta 11 de out. de 2007
Respostas 5
Participantes 3