Tenho a tabela Apostas com uma coluna estrangeira da tabela Tipo_de_Jogos.
mapeamento Apostas
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="loterica.model" auto-import="false">
<class mutable="true" name="Apostas" table="APOSTAS">
<id column="ID_APOSTA" name="id_aposta" type="long" unsaved-value="null">
<generator class="identity"/>
</id>
// demais colunas
<many-to-one class="loterica.model.TipoDeJogos" name="id_tipo_jogo">
<column name="ID_TIPO_JOGO" not-null="true"/>
</many-to-one>
</class>
</hibernate-mapping>
Mapeamento Tipo_de_Jogos
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="loterica.model" auto-import="false">
<class mutable="true" name="TipoDeJogos" table="TIPO_DE_JOGOS">
<id column="ID_TIPO_JOGO" name="id_tipo_jogo" type="long" unsaved-value="null">
<generator class="identity"/>
</id>
<property name="descr_tipo_jogo" type="string"/>
</class>
</hibernate-mapping>
Classe Apostas
public class Apostas {
private long id_aposta;
private TipoDeJogos id_tipo_jogo;
//métodos get e set
}
Classe tipo_de_jogos
public class TipoDeJogos {
private long id_tipo_jogo;
private String descr_tipo_jogo;
public long getId_tipo_jogo() {
return id_tipo_jogo;
}
public void setId_tipo_jogo(long id_tipo_jogo) {
this.id_tipo_jogo = id_tipo_jogo;
}
// demais métodos get e set
}
Agora a consulta no ApostasDAO
public List findAllMegaSena(long id_tipo_jogo) {
Session session = sessionFactory.openSession();
List list = session.createCriteria(Apostas.class).add(Restrictions.eq("id_tipo_jogo", id_tipo_jogo)).list();
//session.createSQLQuery("select * from apostas where id_tipo_jogo = 3").list();
session.flush();
session.close();
return list;
}
O erro quando executo a consulta é o seguinte:
02/01/2010 18:29:59 org.hibernate.property.BasicPropertyAccessor$BasicGetter get
SEVERE: IllegalArgumentException in class: loterica.model.TipoDeJogos, getter method of property: id_tipo_jogo
02/01/2010 18:29:59 lotericadesktop.LotericaDesktopView jBtnVisualizarActionPerformed
SEVERE: null
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of loterica.model.TipoDeJogos.id_tipo_jogo
.
.
.
at loterica.Dao.ApostasDAO.findAllMegaSena(ApostasDAO.java:57) //essa é a linha -> List list = session.createCriteria(Apostas.class).add(Restrictions.eq("id_tipo_jogo", id_tipo_jogo)).list();
Mas a consulta é montada pelo hibernate, antes que ele retorne o erro:
Hibernate:
select
this_.ID_APOSTA as ID1_0_0_,
this_.data_aposta as data2_0_0_,
this_.dezena_1 as dezena3_0_0_,
this_.dezena_2 as dezena4_0_0_,
this_.dezena_3 as dezena5_0_0_,
this_.dezena_4 as dezena6_0_0_,
this_.dezena_5 as dezena7_0_0_,
this_.dezena_6 as dezena8_0_0_,
this_.ID_TIPO_JOGO as ID9_0_0_
from
APOSTAS this_
where
this_.ID_TIPO_JOGO=?
Alguém saberia o que pode ser?
Procurei em outros post, mas sempre se referem ao get não declarado na classe, e isso não acontece no meu caso.
Desconfio talvez que seja o tipo de dados. Eu tenho na classe Apostas o id_tipo_jogo como Tipo_de_Jogos e na classe Tipo_de_Jogos ele é long. Poderia ser isso ?