Hibernate [RESOLVIDO]

3 respostas
T

bom tarde a todos.

estou tentando fazer um exemplo, do uso de hibernate com anotações. quando realizo uma pesquisa não dá nenhum erro, mas quando vou tentar inserir um registro no banco está dando erro.

o problema é na seq. estou usando o postgre 8.2 e o hibernate 3.2

minha tabela no banco:

CREATE TABLE usuario
(
  nome character(50),
  senha character(30),
  pkusuario serial NOT NULL,
  CONSTRAINT pkusuario PRIMARY KEY (pkusuario)
)

tenho uma seq. no banco chamada: usuario_pkusuario_seq. o campo pkusuario da tabela usa essa essa seq.

minha classe está mapeada da sequinte maneira:

@Entity
@Table(name="usuario")
@SequenceGenerator(name="SEQ",sequenceName="usuario_pkusuario_seq")

public class Usuario {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ") 
    private int pkusuario;
erro:
Hibernate: values nextval for usuario_pkusuario_seq
06/08/2007 14:01:20 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 0, SQLState: 42601
06/08/2007 14:01:20 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: ERROR: syntax error at or near "nextval"
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not get next sequence value
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:96)
        at org.hibernate.id.SequenceHiLoGenerator.generate(SequenceHiLoGenerator.java:58)
        at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
        at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
        at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
        at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
        at Teste.main(Teste.java:38)
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "nextval"
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255)
        at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:75)
        ... 11 more

agradeço a todos.

3 Respostas

J

Tarde,

Se ja existe registros na tabela de usuario vc, tem que criar a sua sequence com um numero superior na inicialização, pois o hibernate ira dar exceção sempre que tentar criar um registro que ele não sabe que ja existe.

Abços,

T

a tabela está sem registro.

e tb coloquei o sequinte mapeamento:

@SequenceGenerator(name="SEQ",sequenceName="usuario_pkusuario_seq", initialValue=1, allocationSize=1)

mas não dá certo.

até mais.

T

achei o problema.

estava no dialeto. estava usando:

<!-- SQL dialect <property name="dialect">org.hibernate.dialect.DerbyDialect</property> -->

alterei para esse:

<property name="dialect"> org.hibernate.dialect.PostgreSQLDialect </property>

obrigado a todos.

Criado 6 de agosto de 2007
Ultima resposta 6 de ago. de 2007
Respostas 3
Participantes 2