Tenho um pojo, no qual é um campo no BD como Date, o banco de dados é o DB2,
e esta anotado da seguinte forma:
@Column(name=“dt_emisdocto”)
public String dt_emisdocto;//data de emissao do rg
Quando vou inserir o objeto no BD, utilizando JPA - Hibernate
EntityManager em = conexao.getEntityManager();
em.getTransaction().begin();
em.persist(objeto);
em.getTransaction().commit();
O que acontece é que, eu obtenho a conexao, abro a transacao, persisto, mas quando vou comitar a transacao, da o seguinte erro:
SEVERE: Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC
batch update hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
…
O campo no Bd é um Date, e pode ser gravado no seguinte formato: dd/MM/yyyy.
Voce precisa utilizar a annotation @Temporal para informar que seu atributo ira conter valor de Data, na especificacao consta que esse atributo deve ser ou Date ou Calendar.
Optei por escrever o campo como String, pois a aplicação desenvolvida é Swing, entao utilizo um calendario, mas quando mudo o pojo para Date, ele traz a data em um formato assim:
Dec Monday 13 00:00:00 2009
Mas quando utilizo o pojo como String
ele ja traz a data no formato
dd/MM/yyyy
Entao para utilizar o pojo como Date ou Calendar, teria que mudar a API do Calendario, mas essa API esta muito Complexa.
Utilizando o BD Mysql 5, funciona normalmente, porem quando mudo para o BD DB2, da esse problema.
[quote=romulo.neves]Optei por escrever o campo como String, pois a aplicação desenvolvida é Swing, entao utilizo um calendario, mas quando mudo o pojo para Date, ele traz a data em um formato assim:
Dec Monday 13 00:00:00 2009
Mas quando utilizo o pojo como String
ele ja traz a data no formato
dd/MM/yyyy
Entao para utilizar o pojo como Date ou Calendar, teria que mudar a API do Calendario, mas essa API esta muito Complexa.
Utilizando o BD Mysql 5, funciona normalmente, porem quando mudo para o BD DB2, da esse problema.[/quote]
Faz uma conversão desta tua String pra date!
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date data = format.parse(tuaVariavelString);