Erro no Hibernate - Table doesn't exist - Mas a tabela existe

1 resposta
Baratao

Bom Dia!

Pessoal.... estou tendo um problema estranho aqui.

Tenho as classes Punicao e PunicaoDao.

Estou usando Hibernate.

Em um certo instante da aplicação o usuário pode inserir punições em clubes de futebol . A inserção ocorre sem problemas e a exclusão também.

O usuário pode solicitar um relatório que gera um arquivo xml e na lógica dos dados que serão inclusos nesse xml é efetuada uma pesquisa nas punições que o clube recebeu e faz uma subtração nos pontos que o clube tem em certo campeonato.

Efetuei todos os testes com todo o ambiente em meu notebook e o xml é gerado sem erros.

Porém ontem foi efetuado o deploy no ambiente do cliente e a inserção/exclusão está ok, mas a publicação do xml está dando erro.

Pelo que eu entendi a tabela não existe.
Mas a tabela existe tendo em vista que eu até fiz inserções na mesma.

Podem me auxiliar???

SQL Error: 1146, SQLState: 42S02
Table 'igfutebol.Punicao' doesn't exist
org.hibernate.exception.SQLGrammarException: could not execute query
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.loader.Loader.doList(Loader.java:2223)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
	at org.hibernate.loader.Loader.list(Loader.java:2099)
	at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
	at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
	at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
	at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
	at com.guerreiroconsult.igfutebol.persistencia.PunicaoDao.getSomaPunicoes(PunicaoDao.java:167)
	at com.guerreiroconsult.igfutebol.negocio.bean.Classificacao.getPontosGanhos(Classificacao.java:118)
	at com.guerreiroconsult.igfutebol.negocio.bean.Criterio$1.getValorCriterio(Criterio.java:15)
	at com.guerreiroconsult.igfutebol.negocio.bean.Classificacao.comparaCriterio(Classificacao.java:237)
	at com.guerreiroconsult.igfutebol.negocio.bean.Classificacao.compareTo(Classificacao.java:208)
	at com.guerreiroconsult.igfutebol.negocio.bean.Classificacao.compareTo(Classificacao.java:1)
	at java.util.Arrays.mergeSort(Arrays.java:1144)
	at java.util.Arrays.mergeSort(Arrays.java:1155)
	at java.util.Arrays.mergeSort(Arrays.java:1155)
	at java.util.Arrays.sort(Arrays.java:1079)
	at java.util.Collections.sort(Collections.java:117)
	at com.guerreiroconsult.igfutebol.negocio.export.xml.PublicarXMLThread.gerarClassificacao(PublicarXMLThread.java:1025)
	at com.guerreiroconsult.igfutebol.negocio.export.xml.PublicarXMLThread.gerarClassificacao(PublicarXMLThread.java:1055)
	at com.guerreiroconsult.igfutebol.negocio.export.xml.PublicarXMLThread.geraXML01(PublicarXMLThread.java:185)
	at com.guerreiroconsult.igfutebol.negocio.export.xml.PublicarXMLThread.run(PublicarXMLThread.java:112)
	at java.lang.Thread.run(Thread.java:619)
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'igfutebol.Punicao' doesn't exist
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1467)
	at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
	at org.hibernate.loader.Loader.doQuery(Loader.java:674)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
	at org.hibernate.loader.Loader.doList(Loader.java:2220)
	... 22 more

Aqui está o código onde está o erro.

public Long getSomaPunicoes(Time t, Campeonato c){
		
		List result = null;

		session = HibernateUtil.getOpenSession();
		StringBuilder query = new StringBuilder();
		query.append("select sum(pontos_perdidos) as pontos_perdidos ");
		query.append("from punicao p where id_time = :idTime and id_campeonato = :idCampeonato ");
		result = session.createSQLQuery(query.toString()).setLong("idTime", t.getId()).setLong("idCampeonato", c.getId()).list();// nessa linha
		
		if(result.get(0) != null){
			return ((BigDecimal)result.get(0)).longValue();
		}else{
			return new Long(0);
		}
	}

1 Resposta

Flavio_machine

Tenta colocar punicao assim Punicao o hibernate tabalha com os nomes das classes não das tabelas

Criado 11 de novembro de 2010
Ultima resposta 11 de nov. de 2010
Respostas 1
Participantes 2