Query Hibernate!

9 respostas
jupysilva

Pessoal nao consegui encontrar o topico que eu escrevi anteriormente !!!!

Eu estou com problemas de obter os dados de uma query em Hibernate, pois a query me retorna 3 linhas da base de dados, mas quando imprimo os atributos do bean, me mostra os mesmos dados 3 vezes.

Deveria mostrar tres linhas com dados diferentes.

o codigo da Query eh este:

package imss.gob.mx.factory;

import org.hibernate.Session;
import org.hibernate.Query;
import org.hibernate.Transaction;
import java.util.List;
import java.util.Iterator;
import imss.gob.mx.bean.GlcoArgu;

public class Querys {

	public void getGlcoArgu(String vs_ide_pro, String vs_ide_pcc, int vn_key_usu)
	{
		
		Session sessao = HibernateUtility.getSession();
		
		Transaction tx = sessao.beginTransaction();
		
		String sql = "select g FROM GlcoArgu as g   WHERE   g.ARG_IDEPRO = :vs_ide_pro "+
		                            " AND  g.ARG_IDEPCC = :vs_ide_pcc "+
		                            " AND  g.ARG_KEYUSU = :vn_key_usu ";
		
		Query select = sessao.createQuery(sql);
		   		
		select.setString("vs_ide_pro", "CRRE");
		
		select.setString("vs_ide_pcc", "99407519");
		
		select.setInteger("vn_key_usu",8828865);
		
		List objetos = select.list();
		
		System.out.println(objetos);
		
		tx.commit();
		
		
		System.out.println("Querys debug11");
		
		Iterator it = objetos.iterator();
		
		while(it.hasNext())
		{
		  GlcoArgu glcoargu = (GlcoArgu)it.next();
		  System.out.println("ARG_KEYCAM: "+glcoargu.getARG_KEYCAM());
		  System.out.println("ARG_PVALOR: "+glcoargu.getARG_PVALOR());
		  System.out.println("ARG_DESCAM: "+glcoargu.getARG_DESCAM());
		}
		sessao.close();
	}
}

O Bean que estou usando eh este:

package imss.gob.mx.bean;

import java.util.*;

/**
 * GlcoArgu generated by hbm2java
 */
public class GlcoArgu  implements java.io.Serializable {

    // Fields    

    
     private String ARG_IDEPRO;
     private String ARG_IDEPCC;
     private Integer ARG_KEYUSU;
     private Date ARG_FECINI;
     private String ARG_HORINI;
     private String ARG_PVALOR;
     private String ARG_KEYCAM;
     private String ARG_DESCAM;
	 static final long serialVersionUID = 1L;

    // Constructors

    /** default constructor */
    public GlcoArgu() {
    }
    
    /** constructor with id */
    public GlcoArgu(Integer ARG_KEYUSU) {
        this.ARG_KEYUSU = ARG_KEYUSU;
    }
   
    
    /**
     * 
     */
    public String getARG_IDEPRO() {
        return this.ARG_IDEPRO;
    }
    
    public void setARG_IDEPRO(String ARG_IDEPRO) {
        this.ARG_IDEPRO = ARG_IDEPRO;
    }

    /**
     * 
     */
    public String getARG_IDEPCC() {
        return this.ARG_IDEPCC;
    }
    
    public void setARG_IDEPCC(String ARG_IDEPCC) {
        this.ARG_IDEPCC = ARG_IDEPCC;
    }

    /**
     * 
     */
    public Integer getARG_KEYUSU() {
        return this.ARG_KEYUSU;
    }
    
    public void setARG_KEYUSU(Integer ARG_KEYUSU) {
        this.ARG_KEYUSU = ARG_KEYUSU;
    }

    /**
     * 
     */
    public Date getARG_FECINI() {
        return this.ARG_FECINI;
    }
    
    public void setARG_FECINI(Date ARG_FECINI) {
        this.ARG_FECINI = ARG_FECINI;
    }

    /**
     * 
     */
    public String getARG_HORINI() {
        return this.ARG_HORINI;
    }
    
    public void setARG_HORINI(String ARG_HORINI) {
        this.ARG_HORINI = ARG_HORINI;
    }

    /**
     * 
     */
    public String getARG_PVALOR() {
        return this.ARG_PVALOR;
    }
    
    public void setARG_PVALOR(String ARG_PVALOR) {
        this.ARG_PVALOR = ARG_PVALOR;
    }

    /**
     * 
     */
    public String getARG_KEYCAM() {
        return this.ARG_KEYCAM;
    }
    
    public void setARG_KEYCAM(String ARG_KEYCAM) {
        this.ARG_KEYCAM = ARG_KEYCAM;
    }

    /**
     * 
     */
    public String getARG_DESCAM() {
        return this.ARG_DESCAM;
    }
    
    public void setARG_DESCAM(String ARG_DESCAM) {
        this.ARG_DESCAM = ARG_DESCAM;
    }



}
O arquivo de mapeamento eh este:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 
        Auto-generated mapping file from
        the hibernate.org cfg2hbm engine
-->
    <class name="imss.gob.mx.bean.GlcoArgu" table="GlcoArgu">
        <id name="ARG_KEYUSU" type="java.lang.Integer" unsaved-value="null">
            <column name="ARG_KEYUSU" />
            <generator class="assigned" />
        </id>
        <property name="ARG_IDEPRO" type="java.lang.String">
            <column name="ARG_IDEPRO" />
        </property>
        <property name="ARG_IDEPCC" type="java.lang.String">
            <column name="ARG_IDEPCC" />
        </property>
        <property name="ARG_KEYUSU" type="java.lang.Integer" update="false" insert="false">
            <column name="ARG_KEYUSU" />
        </property>
        <property name="ARG_FECINI" type="java.util.Date">
            <column name="ARG_FECINI" />
        </property>
        <property name="ARG_HORINI" type="java.lang.String">
            <column name="ARG_HORINI" />
        </property>
        <property name="ARG_PVALOR" type="java.lang.String">
            <column name="ARG_PVALOR" />
        </property>
        <property name="ARG_KEYCAM" type="java.lang.String">
            <column name="ARG_KEYCAM" />
        </property>
        <property name="ARG_DESCAM" type="java.lang.String">
            <column name="ARG_DESCAM" />
        </property>
    </class>
</hibernate-mapping>

9 Respostas

_fs

Seu código não parece incorreto. Tem certeza que a query não retorna três objetos iguais?
Que tal postar as queries geradas pelo Hibernate?

Alguns apontamentos:

  • Tive bastante dificuldade para ler o seu código, por favor refira a: http://java.sun.com/docs/codeconv/
  • Por favor, veja em qual seção seu tópico se adequa antes de postar. Quanto mais organizado, mais fácil de achar respostas. Dessa vez eu movi para você.
  • Quando vc for postar codigo, coloque-o entre as tags [ code]
    e [ /code], assim ele ficará endentado.
jupysilva

Lipe, muito obrigado por ter movido e pelas dicas. Eh a 2a vez que coloco uma pergunta no forum e vou ser cincero que nao sei usar muito bem ainda a ferramento do forum !!!

O resultado da query no Hibernate eh:

Hibernate: /* select g FROM GlcoArgu as g
WHERE   g.ARG_IDEPRO = :vs_ide_pro  
AND  g.ARG_IDEPCC = :vs_ide_pcc  
AND  g.ARG_KEYUSU = :vn_key_usu  */ 
select glcoargu0_.ARG_KEYUSU as ARG1_, 
glcoargu0_.ARG_IDEPRO as ARG2_0_, 
glcoargu0_.ARG_IDEPCC as ARG3_0_, glcoargu0_.ARG_KEYUSU as ARG1_0_, glcoargu0_.ARG_FECINI as ARG4_0_,
glcoargu0_.ARG_HORINI as ARG5_0_, glcoargu0_.ARG_PVALOR as ARG6_0_, glcoargu0_.ARG_KEYCAM as ARG7_0_,
glcoargu0_.ARG_DESCAM as ARG8_0_ 
from GlcoArgu glcoargu0_ where glcoargu0_.ARG_IDEPRO=? and glcoargu0_.ARG_IDEPCC=? and glcoargu0_.ARG_KEYUSU=?
Hibernate: /* select g FROM GlcoArgu as g   WHERE   g.ARG_IDEPRO = :vs_ide_pro  
AND  g.ARG_IDEPCC = :vs_ide_pcc  AND  g.ARG_KEYUSU = :vn_key_usu  */
select glcoargu0_.ARG_KEYUSU as col_0_0_ from GlcoArgu glcoargu0_ where glcoargu0_.ARG_IDEPRO=?
and glcoargu0_.ARG_IDEPCC=? and glcoargu0_.ARG_KEYUSU=?
ARG_KEYCAM: PERIODO
ARG_PVALOR: 2002006
ARG_DESCAM: QINCENA DE PROCESO
ARG_KEYCAM: PERIODO
ARG_PVALOR: 2002006
ARG_DESCAM: QINCENA DE PROCESO
ARG_KEYCAM: PERIODO
ARG_PVALOR: 2002006
ARG_DESCAM: QINCENA DE PROCESO
jupysilva

O Resultada da query na base de datos eh:

select * from glcoargu
where ARG_IDEPRO='CRRE'
ARG_IDEPRO	ARG_IDEPCC	ARG_KEYUSU	ARG_FECINI	ARG_HORINI	ARG_PVALOR	ARG_KEYCAM
CRRE	99407519	8828865	(null)	(null)	2002006	PERIODO
CRRE	99407519	8828865	(null)	(null)	/opt/IMSS01/OD.SI/IP/nom_2000/INTERCAMBIO/CR_C/	RUTA_CARG
CRRE	99407519	8828865	(null)	(null)	T	TIP_PRO
_fs

Quebrei as linhas de código para você.

Cara, não deu para entender os resultados da busca direto na database, pode postar de um jeito melhor? Do jeito que tá parece que a coluna ARG_DESCAM não existe e ARG_PVALOR e ARG_KEYCAM tem valores nulos.

jupysilva

Lipe mando a saida da query em um arquivo HTML

_fs

Beleza, agora deu pra ver direitinho.

Mas a coluna ARG_DESCAM ainda não existe neste relatório que me mandou. Pelo select gerado no Hibernate são 8 colunas, mas o relatório diz 7.

Humm … tem certeza que está se conectando ao banco certo? @.@

jupysilva

Lipe quando exportei a query esqueci de incluir a coluna, te mando em anexo o HTML novamente

_fs

Cara, as três linhas na database tem a mesma primary key? Isso só pode dar errado hehe

jupysilva

Voce ta falando do campo ARG_KEYUSU?

Cara na verdade essa tabela nao tem PK, eu usei este campo porque me falaram que era unico.

Como se pode fazer quando nao temos PK na tabela?

Criado 2 de agosto de 2005
Ultima resposta 3 de ago. de 2005
Respostas 9
Participantes 2