Consulta no Hibernate

5 respostas
jfnando

Pessoal, estou com o seguinte problema:
tenho uma classe com pk composta e tenho a classe DesprecPK que representa a pk assim:

package jfinances.model.bean;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Set;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

/** 
 *        @hibernate.class
 *         table="DESPREC"
 *     
*/
public class Desprec implements Serializable {

    /** identifier field */
    private jfinances.model.bean.DesprecPK comp_id;

    /** nullable persistent field */
    private String documento;

    /** persistent field */
    private String descricao;

    /** persistent field */
    private Date dtrecord;

    /** persistent field */
    private Date vencimento;

    /** nullable persistent field */
    private Date liquidacao;

    /** persistent field */
    private BigDecimal valor;

    /** persistent field */
    private BigDecimal valororigem;

    /** persistent field */
    private BigDecimal saldo;

    /** persistent field */
    private String situacao;

    /** nullable persistent field */
    private jfinances.model.bean.Conta conta;

    /** nullable persistent field */
    private jfinances.model.bean.Grupodesprec grupodesprec;

    /** persistent field */
    private Set itempagrecs;

    /** full constructor */
    public Desprec(jfinances.model.bean.DesprecPK comp_id, String documento, String descricao, Date dtrecord, Date vencimento, Date liquidacao, BigDecimal valor, BigDecimal valororigem, BigDecimal saldo, String situacao, jfinances.model.bean.Conta conta, jfinances.model.bean.Grupodesprec grupodesprec, Set itempagrecs) {
        this.comp_id = comp_id;
        this.documento = documento;
        this.descricao = descricao;
        this.dtrecord = dtrecord;
        this.vencimento = vencimento;
        this.liquidacao = liquidacao;
        this.valor = valor;
        this.valororigem = valororigem;
        this.saldo = saldo;
        this.situacao = situacao;
        this.conta = conta;
        this.grupodesprec = grupodesprec;
        this.itempagrecs = itempagrecs;
    }

    /** default constructor */
    public Desprec() {
    }

    /** minimal constructor */
    public Desprec(jfinances.model.bean.DesprecPK comp_id, String descricao, Date dtrecord, Date vencimento, BigDecimal valor, BigDecimal valororigem, BigDecimal saldo, String situacao, Set itempagrecs) {
        this.comp_id = comp_id;
        this.descricao = descricao;
        this.dtrecord = dtrecord;
        this.vencimento = vencimento;
        this.valor = valor;
        this.valororigem = valororigem;
        this.saldo = saldo;
        this.situacao = situacao;
        this.itempagrecs = itempagrecs;
    }

    /** 
     *            @hibernate.id
     *             generator-class="assigned"
     *         
     */
    public jfinances.model.bean.DesprecPK getComp_id() {
        return this.comp_id;
    }

    public void setComp_id(jfinances.model.bean.DesprecPK comp_id) {
        this.comp_id = comp_id;
    }

    /** 
     *            @hibernate.property
     *             column="DOCUMENTO"
     *             length="20"
     *         
     */
    public String getDocumento() {
        return this.documento;
    }

    public void setDocumento(String documento) {
        this.documento = documento;
    }

    /** 
     *            @hibernate.property
     *             column="DESCRICAO"
     *             length="60"
     *             not-null="true"
     *         
     */
    public String getDescricao() {
        return this.descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /** 
     *            @hibernate.property
     *             column="DTRECORD"
     *             length="19"
     *             not-null="true"
     *         
     */
    public Date getDtrecord() {
        return this.dtrecord;
    }

    public void setDtrecord(Date dtrecord) {
        this.dtrecord = dtrecord;
    }

    /** 
     *            @hibernate.property
     *             column="VENCIMENTO"
     *             length="10"
     *             not-null="true"
     *         
     */
    public Date getVencimento() {
        return this.vencimento;
    }

    public void setVencimento(Date vencimento) {
        this.vencimento = vencimento;
    }

    /** 
     *            @hibernate.property
     *             column="LIQUIDACAO"
     *             length="10"
     *         
     */
    public Date getLiquidacao() {
        return this.liquidacao;
    }

    public void setLiquidacao(Date liquidacao) {
        this.liquidacao = liquidacao;
    }

    /** 
     *            @hibernate.property
     *             column="VALOR"
     *             length="15"
     *             not-null="true"
     *         
     */
    public BigDecimal getValor() {
        return this.valor;
    }

    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }

    /** 
     *            @hibernate.property
     *             column="VALORORIGEM"
     *             length="15"
     *             not-null="true"
     *         
     */
    public BigDecimal getValororigem() {
        return this.valororigem;
    }

    public void setValororigem(BigDecimal valororigem) {
        this.valororigem = valororigem;
    }

    /** 
     *            @hibernate.property
     *             column="SALDO"
     *             length="15"
     *             not-null="true"
     *         
     */
    public BigDecimal getSaldo() {
        return this.saldo;
    }

    public void setSaldo(BigDecimal saldo) {
        this.saldo = saldo;
    }

    /** 
     *            @hibernate.property
     *             column="SITUACAO"
     *             length="1"
     *             not-null="true"
     *         
     */
    public String getSituacao() {
        return this.situacao;
    }

    public void setSituacao(String situacao) {
        this.situacao = situacao;
    }

    /** 
     *            @hibernate.many-to-one
     *             update="false"
     *             insert="false"
     *         
     *            @hibernate.column
     *             name="CONTA"
     *         
     */
    public jfinances.model.bean.Conta getConta() {
        return this.conta;
    }

    public void setConta(jfinances.model.bean.Conta conta) {
        this.conta = conta;
    }

    /** 
     *            @hibernate.many-to-one
     *             update="false"
     *             insert="false"
     *         
     *            @hibernate.column
     *             name="GRUPO"
     *         
     */
    public jfinances.model.bean.Grupodesprec getGrupodesprec() {
        return this.grupodesprec;
    }

    public void setGrupodesprec(jfinances.model.bean.Grupodesprec grupodesprec) {
        this.grupodesprec = grupodesprec;
    }

    /** 
     *            @hibernate.set
     *             lazy="true"
     *             inverse="true"
     *             cascade="none"
     *            @hibernate.collection-key
     *             column="CONTA"
     *            @hibernate.collection-key
     *             column="LANCAMENTO"
     *            @hibernate.collection-key
     *             column="PARCELA"
     *            @hibernate.collection-key
     *             column="GRUPO"
     *            @hibernate.collection-one-to-many
     *             class="jfinances.model.bean.Itempagrec"
     *         
     */
    public Set getItempagrecs() {
        return this.itempagrecs;
    }

    public void setItempagrecs(Set itempagrecs) {
        this.itempagrecs = itempagrecs;
    }

    public String toString() {
        return new ToStringBuilder(this)
            .append("comp_id", getComp_id())
            .toString();
    }

    public boolean equals(Object other) {
        if ( !(other instanceof Desprec) ) return false;
        Desprec castOther = (Desprec) other;
        return new EqualsBuilder()
            .append(this.getComp_id(), castOther.getComp_id())
            .isEquals();
    }

    public int hashCode() {
        return new HashCodeBuilder()
            .append(getComp_id())
            .toHashCode();
    }

}

quando vou fazer uma consulta querendo somente o numero de lancamento da despesa nao está me retornando nada, retorna null... se eu faço a consulta em uma classe q tem chave normal retorna blz.. alguem sabe oq é isso e como posso fazer pra contornar esse problema, se é q é um problema? valeu

5 Respostas

jfnando

ops, a classe da pk é essa:

package jfinances.model.bean;

import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

/** @author Hibernate CodeGenerator */
public class DesprecPK implements Serializable {

    /** identifier field */
    private Integer conta;

    /** identifier field */
    private Integer lancamento;

    /** identifier field */
    private Integer parcela;

    /** identifier field */
    private Integer grupo;

    /** full constructor */
    public DesprecPK(Integer conta, Integer lancamento, Integer parcela, Integer grupo) {
        this.conta = conta;
        this.lancamento = lancamento;
        this.parcela = parcela;
        this.grupo = grupo;
    }

    /** default constructor */
    public DesprecPK() {
    }

    /** 
     *                @hibernate.property
     *                 column="CONTA"
     *                 length="10"
     *             
     */
    public Integer getConta() {
        return this.conta;
    }

    public void setConta(Integer conta) {
        this.conta = conta;
    }

    /** 
     *                @hibernate.property
     *                 column="LANCAMENTO"
     *                 length="10"
     *             
     */
    public Integer getLancamento() {
        return this.lancamento;
    }

    public void setLancamento(Integer lancamento) {
        this.lancamento = lancamento;
    }

    /** 
     *                @hibernate.property
     *                 column="PARCELA"
     *                 length="10"
     *             
     */
    public Integer getParcela() {
        return this.parcela;
    }

    public void setParcela(Integer parcela) {
        this.parcela = parcela;
    }

    /** 
     *                @hibernate.property
     *                 column="GRUPO"
     *                 length="10"
     *             
     */
    public Integer getGrupo() {
        return this.grupo;
    }

    public void setGrupo(Integer grupo) {
        this.grupo = grupo;
    }

    public String toString() {
        return new ToStringBuilder(this)
            .append("conta", getConta())
            .append("lancamento", getLancamento())
            .append("parcela", getParcela())
            .append("grupo", getGrupo())
            .toString();
    }

    public boolean equals(Object other) {
        if ( !(other instanceof DesprecPK) ) return false;
        DesprecPK castOther = (DesprecPK) other;
        return new EqualsBuilder()
            .append(this.getConta(), castOther.getConta())
            .append(this.getLancamento(), castOther.getLancamento())
            .append(this.getParcela(), castOther.getParcela())
            .append(this.getGrupo(), castOther.getGrupo())
            .isEquals();
    }

    public int hashCode() {
        return new HashCodeBuilder()
            .append(getConta())
            .append(getLancamento())
            .append(getParcela())
            .append(getGrupo())
            .toHashCode();
    }

}
A

E aí, amigo
mostra a tua consulta aí… :wink:

jfnando

o método que faz a consulta é esse:

public static long nextCodigo ( Class clazz, String campo, String where ) throws DatabaseDaoException
    {
        long nextCodigo = 0L;
        Object ret = null;
        Transaction t = null;
        String consulta = null;
        
        try
        {
            if ( campo != null || ! campo.trim ().equals ("") )
            {
                consulta = "select max("+campo+") from " + clazz.getName () + " " + ( where == null ? "" : where );
                t = beginTransaction ();
                ret = getSessaoDoThread ().createQuery (consulta).uniqueResult ();
                nextCodigo = Long.parseLong ( ret.toString () );
                nextCodigo += 1;
                commitTransaction (t);
            }
            else
            {
                System.err.println ("Não informado campo");
                throw new DatabaseDaoException ("Não informado campo de pesquisa.");
            }
        }
        catch (HibernateException e)
        {
            System.err.println ( "HibernateException: list->" + e.getMessage () );
            rollbackTransaction (t);
            throw new DatabaseDaoException ( e.getMessage () );
        }
        catch ( Exception e )
        {
            System.err.println ( "Exception: list->" + e.getMessage () );
            rollbackTransaction (t);
            throw new DatabaseDaoException ( "Erro inesperado: "+ e.getMessage ());
        }
        finally
        {
            return nextCodigo;
        }
    }
A

E aí, amiguinho…

Vê só… Acho que vc deve chamar esse método passando os seguintes parametros:
(Desprec.class, “comp_id.lancamento”, “tua condicao”). É assim que vc tá fazendo? Se for, não sei o que pode tá dando errado ainda…

Espero ter ajudado :wink:

Aninha.

jfnando

entao velinho, olha só a minha ignorância hiuahaihaiiaa eu tava colocando assim

(Desprec.class, “lancamento”,“minha consicao”)…

pkbá memu neh…

Muitíssimo obrigado, valeu, falows

Criado 27 de junho de 2006
Ultima resposta 27 de jun. de 2006
Respostas 5
Participantes 2