Hibernate + postgres

7 respostas
J

pessoal

nao estou conseguindo inserir no postgres usando o hibernate

olha o erro que aparece
Hibernate: insert into "Notificacao" ("CHAVE_ACESSO", "DATA_PROCESSAMENTO", "XML", "codigo") values (?, ?, ?, ?)
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
	at org.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)
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
	at br.com.notificacao.Teste.main(Teste.java:36)
Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into "Notificacao" ("CHAVE_ACESSO", "DATA_PROCESSAMENTO", "XML", "codigo") values (`123`, 2009-06-14 22:56:50.765000 -03:00:00, xmlTeste, 180) foi abortada. Chame getNextException para ver a causa.
	at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2531)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1344)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:343)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2668)
	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)

vi num outro forum que o problema tinha sido resolvido colocando os nomes dos parametros entre ``. Fiz o comando no postgres e deu certo usando ``.
Olha como mapiei.

//Definindo que a classe será persistida
@Entity

@Table(name="`Notificacao`")
public class Notificacao 
{
	@Id
	
	@GeneratedValue(strategy=GenerationType.SEQUENCE)
	@Column(name="`codigo`")
	private long codigo;
	@Column(name="`DATA_PROCESSAMENTO`")
	private Date data;
	@Column(name="`CHAVE_ACESSO`")
	private String chaveAcesso;
	@Column(name="`XML`")
	private String xml;
meu hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- properties -->
<property name="connection.driver_class">
org.postgresql.Driver
</property>
<property name="connection.url">
jdbc:postgresql://localhost:5432/postgres
</property>
<property name="dialect">
org.hibernate.dialect.PostgreSQLDialect
</property>
<property name="show_sql">true</property><property name="connection.username">postgres</property>
<property name="connection.password">postgres</property>
<property name="connection.pool_size">10</property>
<!-- mapping classes -->
<mapping class="br.com.Notificacao"/>
</session-factory>
</hibernate-configuration>

alguem sabe dizer como resolver isso?

7 Respostas

J

peguei o sql e tentei no banco, ele soh aceita o sql dessa forma

insert into "Notificacao" ("CHAVE_ACESSO", "DATA_PROCESSAMENTO", "XML", "codigo") values ('123', '10/10/2009', 'xmlTesteee', '170')

mas como ficaria para adicionar as coisas dentro de aspas pelo hibernate?

V

Voce esta coloando aspas simples dentro das aspas duplas

@Table(name="`Notificacao`")  

//tente assim - é a forma que eu utilizo e funciona
//altere tbm nos @Column
@Table(name="Notificacao")
J

eu tinha feito assim antes e não tinha dado certo

vc ta usando o postgres tb? eu usei o hsqldb e deu certo ,mas com o postgres não deu

V

Utilizo postgres. Tente colocar o nome da tabela em UpperCase.

J

nao deu certo ainda, continua o mesmo erro…eu tirei as aspas e tentei colocar o nome da tabela em maiusculo, mas continua dando erro

eu to usando java 5, tem alguma coisa a ve de ser pro java 6?

J

ficou assim meu sql

e o erro assim

V

Acho q nao deve ter algo haver com java 5, pois ja utilizei e sempre funcionou. Sobre a saida do seu sql esta correto, sempre no output aparece desta forma.
Para fazer pesquisas, updates, deletes tudo funciona ?

Criado 14 de junho de 2009
Ultima resposta 16 de jun. de 2009
Respostas 7
Participantes 2