| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2006 11:22:15
|
Cocota
JavaChild
![[Avatar]](/images/avatar/fdad3b5b2200b598dfde9517e5b426a8.jpg)
Membro desde: 03/04/2006 21:17:41
Mensagens: 149
Localização: Natal-RN
Offline
|
Olá a todos, vim em busca de help.
Tô fora de casa, vou só introduzir o problema. Quando chegar eu boto os códigos de erro e os mapeamentos e tal.
O sistema controla projetos. Um projeto depende de um responsavel. (responsavel 1 : n projetos).
Eu tô inserindo um responsavel beleza.
Mas na hora de inserir um projeto, eu seleciono o responsavel, dou um setResponsavel e depois mando persistir o objeto projeto no banco. Me retorna um erro.
(org.hibernate...) .SQLGrammarException diz que acontece um erro por não conseguir fazer update em batch.
Alguma idéia inicial?
|
Ez RulEz Até de Madrugada |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2006 12:03:17
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Pode postar o stacktrace todo, a parte do código pertinente e os mapeamentos de ambas as classes?
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2006 14:37:53
|
Cocota
JavaChild
![[Avatar]](/images/avatar/fdad3b5b2200b598dfde9517e5b426a8.jpg)
Membro desde: 03/04/2006 21:17:41
Mensagens: 149
Localização: Natal-RN
Offline
|
Vamo la,
Responsavel.hbm.xml
Projeto.hbm.xml
Erro 505
type Exception Report
exception
javax.servlet.ServletException: Could not execute JDBC batch update
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
root cause
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:59)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:181)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
/* Essas tres abaixo são classes minhas */
br.rn.cefet.nudes.modelo.percistencia.GenericDAO.executeOperacao(GenericDAO.java:59)
br.rn.cefet.nudes.modelo.negocio.Cadastrador.execute(Cadastrador.java:26)
br.rn.cefet.nudes.view.struts.action.CadastroProjetoAction.execute(CadastroProjetoAction.java:29)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
Código da classe CadastroProjetoAction
Código Classe Cadastrador
Código Classe GenericDAO
Meu problema é não ter nem noção do que significa esse erro.
Nem noção.
|
Ez RulEz Até de Madrugada |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2006 15:32:43
|
Cocota
JavaChild
![[Avatar]](/images/avatar/fdad3b5b2200b598dfde9517e5b426a8.jpg)
Membro desde: 03/04/2006 21:17:41
Mensagens: 149
Localização: Natal-RN
Offline
|
Lendo outros topicos do Fórum do GUJ. Eu achei um que dava uma dica para setar a propriedade no hibernate.cfg.xml
Já fiz isso, o erro mudou, e eu não entendi nada novamente.
exception
javax.servlet.ServletException: could not insert: [br.rn.cefet.nudes.modelo.vo.Projeto]
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
root cause
org.hibernate.exception.SQLGrammarException: could not insert: [br.rn.cefet.nudes.modelo.vo.Projeto]
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:59)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:1869)
org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:2200)
org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:46)
org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
br.rn.cefet.nudes.modelo.percistencia.GenericDAO.executeOperacao(GenericDAO.java:60)
br.rn.cefet.nudes.modelo.negocio.Cadastrador.execute(Cadastrador.java:26)
br.rn.cefet.nudes.view.struts.action.CadastroProjetoAction.execute(CadastroProjetoAction.java:29)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
Também já mudei o método .save() para .saveOrUpdate() também não consigo persistir o objeto. O erro é igual ao primeiro listado aqui.
|
Ez RulEz Até de Madrugada |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2006 16:29:16
|
takeshi10
Java Ninja
Membro desde: 08/08/2004 23:05:25
Mensagens: 254
Localização: Brasil
Offline
|
verifique se o Dialect setado eh o correto para o seu banco...
|
takeshi |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2006 16:55:25
|
Cocota
JavaChild
![[Avatar]](/images/avatar/fdad3b5b2200b598dfde9517e5b426a8.jpg)
Membro desde: 03/04/2006 21:17:41
Mensagens: 149
Localização: Natal-RN
Offline
|
takeshi,
Meu banco é o PostgreSQL 8.1
Esse é o dialeto escolhido e configurado no cfg.xml
Eu não acho que seja esse erro porque eu consigo inserir o objeto Responsavel.
|
Ez RulEz Até de Madrugada |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2006 10:11:42
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Você está fazendo corretamente ao setar o responsável antes de salvar o projeto.
O código e o mapeamento parecem corretos, o que falta agora é o SQL gerado pelo Hibernate. O erro mostrado poderia ser melhor, mas o que foi mostrado é suficiente para deduzir que o problema ocorre na fase final: a excecução da query.
Então se o SQL não está sendo mostrado no console, adicione essa linha em seu log4j.properties:
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/04/2006 00:47:39
|
Cocota
JavaChild
![[Avatar]](/images/avatar/fdad3b5b2200b598dfde9517e5b426a8.jpg)
Membro desde: 03/04/2006 21:17:41
Mensagens: 149
Localização: Natal-RN
Offline
|
LIPE,
Vamo continuar que o papo tá bom.
O ShowSQL tá TRUE. Não tem erro nele.
Na sexta-feira de 17:30 eu troquei de SGBD. Botei o MySQL e junto com ele troquei o hibernate.cfg.xml por um que eu tinha pronto aqui. De primeira funcionou!
De cara eu culpei o hibernate-configuration que eu tava usando.
Vou colocar os dois aqui pra discutir em cima:
Antigo
Atual
|
Ez RulEz Até de Madrugada |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/04/2006 09:58:53
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Não importa se o show_sql é true ou false. Se você configura o logger para imprimir apenas WARN e não DEBUG, o sql não é mostrado.
Se ao mudar de banco funcionou então há algum problema no PostgreSQLDialect que seria encontrado ao olharmos o sql gerado
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/04/2006 11:32:37
|
Cocota
JavaChild
![[Avatar]](/images/avatar/fdad3b5b2200b598dfde9517e5b426a8.jpg)
Membro desde: 03/04/2006 21:17:41
Mensagens: 149
Localização: Natal-RN
Offline
|
Saquei Saquei....
foi mal... jurava ter visto ShowSQL=FALSE no seu post.
e os arquivos cfg.xml nao tem nada a ver?
|
Ez RulEz Até de Madrugada |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/04/2006 11:36:22
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Se só de trocar o banco e dialect resolveu, a priori tem nada a ver.
É bem improvável que seja um bug no Hibernate. É bem provável que você tenha cometido algum erro ao montar o banco de dados no MySQL. Alguma coluna com nome diferente ou qualquer coisa assim. Se pegar a query gerada e executá-la diretamente no banco de dados fica fácil pegar o erro.
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2007 03:37:51
|
rafaelglauber
GUJ Master
![[Avatar]](/images/avatar/e9abec5e32203998211653b45023be1c.jpeg)
Membro desde: 07/09/2007 23:05:20
Mensagens: 1065
Localização: Feira de Santana
Offline
|
Estou utilizando hibernate com annotations, tive que realizar a seguinte mudança para funcionar corretamente com postgresql: Na anotação @Column eu coloquei o nome da coluna entre ``, exemplo:@Column(name="`password`"). A partir dessa mudança tudo funcionou corretamente, inclusive no próprio nome da entidade fiz o mesmo procedimento na anotação correspondente. Creio que o principio do problema seja o mesmo, logo que faça o mesmo em seu arquivo de mapeamento acredito que irá funcionar.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/10/2008 10:31:35
|
brancoisrael
What is classpath?
Membro desde: 10/10/2007 13:00:00
Mensagens: 8
Offline
|
Como vc esta fazendo para gerar a chave primária do Postgre? Creio que o seu problema esta ai, veja como a anotation @TableGenerator funciona que eu acho que vc vai resolver o seu problema com o Postgre.
|
|
|
 |
|
|