Hibernate db2

olá pessoal,

Alguem ja teve algum problema semelhante com hibernate + db2?

<session-factory name=""> <property name="hibernate.connection.driver_class">com.ibm.db2.jcc.DB2Driver</property> <property name="hibernate.connection.url">jdbc:db2://localhost:50000/CAMILO</property> <property name="hibernate.connection.username">db2admin</property> <property name="hibernate.connection.password">camilo2593</property> <property name="hibernate.dialect">org.hibernate.dialect.DB2Dialect</property> <property name="hibernate.default_schema">CAMILO</property> <mapping class="br.com.bean.Pessoa"/> </session-factory>

error:

org.hibernate.exception.SQLGrammarException: could not insert: [br.com.bean.Pessoa]
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2267)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2660)
	at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:56)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
	at br.com.dao.PessoaDAO.salvar(PessoaDAO.java:22)
	at br.com.controler.PessoaControl.cadastrar(PessoaControl.java:22)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:152)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
	at javax.faces.component.UICommand.broadcast(UICommand.java:383)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
Caused by: com.ibm.db2.jcc.am.io: DB2 SQL Error: SQLCODE=-798, SQLSTATE=428C9, SQLERRMC=ID, DRIVER=3.57.82
	at com.ibm.db2.jcc.am.bd.a(bd.java:676)
	at com.ibm.db2.jcc.am.bd.a(bd.java:60)
	at com.ibm.db2.jcc.am.bd.a(bd.java:127)
	at com.ibm.db2.jcc.am.km.c(km.java:2506)
	at com.ibm.db2.jcc.am.km.d(km.java:2483)
	at com.ibm.db2.jcc.am.km.a(km.java:1963)
	at com.ibm.db2.jcc.t4.db.g(db.java:139)
	at com.ibm.db2.jcc.t4.db.a(db.java:39)
	at com.ibm.db2.jcc.t4.t.a(t.java:32)
	at com.ibm.db2.jcc.t4.sb.h(sb.java:135)
	at com.ibm.db2.jcc.am.km.eb(km.java:1934)
	at com.ibm.db2.jcc.am.lm.ic(lm.java:2798)
	at com.ibm.db2.jcc.am.lm.b(lm.java:3517)
	at com.ibm.db2.jcc.am.lm.Wb(lm.java:690)
	at com.ibm.db2.jcc.am.lm.executeUpdate(lm.java:673)
	at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:23)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2247)
	... 40 more

quem pode dar um help…

Não sei se ajuda mas o SQLCODE -798 no db2
corresponde a tentar especificar um valor para uma coluna que foi definida como “auto”, talvez haja algum erro no mapeamento.

Fala LPJava !!

Na sua tabela DB2 tem alguma coluna que é AUTO_INCREMENT, caso tenha vc deve especificar isso no mapeamento do hibernate.

você poderia postar o mapeamento do hibernate e o script da tabela.

opa! aqui a classe bean.

[code]package br.com.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name=“LOPES”)
public class Pessoa {
@Id
private int id ;
private String nome;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}

}
[/code]

o id ta como auto_increment mesmo. tentei usar a JPA sequence seria essa?


Fala LPJava !!!

pelo que vi na sua tabela o seu campo ID e auto increment e vc nao mapeou isso na sua classe !!!

faz a seguinte alteração.

  @Id   
  @GeneratedValue(strategy=GenerationType.IDENTITY)
      private int id ;

opa emerson, veja ai acabei de atualizar:

[code]

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name=“LOPES”)
public class Pessoa {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id ;
private String nome;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}

}[/code]

Error:

[code]
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name=“LOPES”)
public class Pessoa {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id ;
private String nome;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}

}[/code]

ja estou ficando louco com o DB2. No mysql nao tenho problemas.
Alguma ideia?