Hibernate com ID Increment [RESOLVIDO]

3 respostas
K

Boa dia galera,

Estou com o seguinte problema…
Tenho uma entidade Relatorio.java

public class RelatorioDTO implements IDefaultDTO {
	private static final long serialVersionUID = 1L;
	private Integer id;
	private Integer jobsNumber;
       /*construtor, gets e sets*/
}

Relatorio.hbm.xml

<?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>
    <class name="RelatorioDTO">
  		<id name="id" type="java.lang.Integer">
			<generator class="increment"/>
   		</id>
	    <property name="jobsNumber" column="jobs" type="java.lang.Integer"/>
    </class>
</hibernate-mapping>

Um código de busca que uso

...
l_sql = "Select jobsNumber from tab_jobs";
consulta = conexao.createSQLQuery(l_sql).addEntity(RelatorioDTO.class);
listaValores = l_criteria.list();
...

Ele retorna um erro dizendo: “A coluna ID não foi encontrada no ResulteSet.”

Mas se eu usei increment não teria que aparacer esse alerta neh?!!
o que pode está errado??

[]´s

3 Respostas

rdantas
Onde q vc vinculou esta tabela à classe RelatoriosDTO? Não  faltando isso no hbm....
K

O declaração da tabela no HBM não é necessária, apenas quando vc utiliza Criteria.
No meu caso eu uso “createSQLQuery”;

Se eu colocar no meu sql

l_sql = "Select 1 as id, jobsNumber from tab_jobs";

ele gera a lista de entidades normal…

o problema está quando eu tento omitir o ID

K

Pelo que anedi lendo na documentação eu tenho que ter uma PK,
a solução que encontrei foi gerar um ID dentro do meu BD.

no caso do postgres usei

Select to_number(to_char((random()*1000000),9999999),9999999) as id

Aproveitando qual seria a forma correta de fazer relatórios?? pois a minha entidade não tem tabela!
ela é um relatorio que por sua vez é gerado por uma combinação de tabelas…
Usar View seria uma solução?
Ou existe outra forma?
Essa minha solução funciona temporariamente, pois estou preso ao SGBD.

[]s

Criado 21 de fevereiro de 2008
Ultima resposta 21 de fev. de 2008
Respostas 3
Participantes 2