Boa noite galera
Estou sem intender um erro que está dando em um sistema que estou fazendo aqui…
Eu estou usando hibernate e struts…os mapeamentos estão corretos, tanto que eles fazem a persistência direitinho no DB. Mas tem uma pequena coisa… em uma função que fiz para ele me retornar uma lista de acordo com uma query ele está dando um erro do hibernate. Deixem me mostrar o que ocorre:
Primeiramente o mapeamento meu banco de dados…
<!-- Arquivo de configuração do hibernate -->
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/sistemaseduh</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<!-- JDBC connection pool (use the built-in) -->
<!--<property name="connection.pool_size">2</property>-->
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- CONFIGURANDO POOL DE CONEXAO -->
<property name="hibernate.c3p0.max_size">10</property>
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">10</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<mapping resource="Denuncia.hbm.xml"/>
<mapping resource="Infracao.hbm.xml"/>
</session-factory>
</hibernate-configuration>
<!-- Mapeamento da tabela Infracao, que tem um relacionamento 1:n com a tabela de denuncia tb_denuncia -->
<hibernate-mapping>
<class name="fiscalizacao.modelo.Infracao" table="tb_infracao">
<id name="id_tb_infracao" >
<generator class="increment"/>
</id>
<property name="descricao" />
<set name="denuncia" inverse="true" lazy="true">
<key column="id_tb_infracao"/>
<one-to-many class="fiscalizacao.modelo.Denuncia"/>
</set>
</class>
</hibernate-mapping>
<!-- Mapeamento da tabela Denuncia -->
<hibernate-mapping>
<class name="fiscalizacao.modelo.Denuncia" table="tb_denuncia">
<id name="id_tb_denuncia" >
<generator class="increment"/>
</id>
<property name="observacao" />
<property name="endereco" />
<many-to-one name="infracao" class="fiscalizacao.modelo.Infracao" column="id_tb_infracao"/>
</class>
</hibernate-mapping>
//classe denuncia
public class Denuncia {
private int id_tb_denuncia;
private String observacao;
private String endereco;
private Infracao infracao;
//gets e sets omitidos
}
//classe infracao
public class Infracao {
private int id_tb_infracao;
private String descricao;
private Collection denuncia;
//gets e sets omitidos
}
//classe denuncia, onde está dando o problema
public class DenunciaAction extends ActionSupport {
private Denuncia denuncia;
private List lista;
private Infracao infracao;
// ...
//neste método é onde está o problema...ele tenta me retornar uma lista de denuncias a partir de uma query
public String listByInfracao(){
String sql = "select a.endereco endereco_denuncia, p.descricao descricao_infracao, a.observacao observacao_denuncia from tb_denuncia a, tb_infracao p where a.id_tb_infracao = p.id_tb_infracao";
this.setLista(new DenunciaDaoImpl().query(sql));
return SUCCESS;
}
}
//método ao qual a função listByInfracao se refere
public List query(String sql) {
try {
Query select = HibernateUtil.getSession().createSQLQuery(sql);
return select.list();
} catch (Exception e) {
System.out.println("sql ta errada olha so o erro->"+e.getMessage());
return null;
}
}
O que ocorre é o seguinte…toda vez que tento usar este método ele me retorna um erro do hybernate.
Hibernate: select a.endereco endereco_denuncia, p.descricao descricao_infracao, a.observacao observacao_denuncia from tb_denuncia a, tb_infracao p where a.id_tb_infracao = p.id_tb_infracao
sql ta errada olha so o erro->No Dialect mapping for JDBC type: -1
Mas ai é que está o problema…ele diz que está com problema de dialeto…mas eu indiquei o dialeto que uso no documento de configuração do hibernate :?
Se alguma alma iluminada puder me dar uma luz aqui ficaria grato