Consulta com Criteria e campo com texto estatico

23 views
Skip to first unread message

Bruno Missi Xavier

unread,
Mar 22, 2010, 10:33:20 AM3/22/10
to hibernat...@googlegroups.com
Srs,

Alguem saberia como eu posso inserir um texto junto com o valor de um campo retornado do banco em uma consulta via Criteria?

Em SQL seria assim:

select
  'CPF: ' || pesscpf
from
  edpess





--
Atenciosamente,

Bruno Missi Xavier
Consultor Interno de Gestão
Tel/cel: (28) 3521-2001 / (27) 8836-6538
www.dataci.es.gov.br
email: dataci...@cachoeiro.es.gov.br
skype: bruno.missi.xavier


Gilberto Santos

unread,
Mar 22, 2010, 3:03:26 PM3/22/10
to hibernat...@googlegroups.com
tente  Projections  



--
Você está recebendo esta mensagem porque se inscreveu no grupo "Hibernate Brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para hibernat...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para hibernate-bras...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/hibernate-brasil?hl=pt-BR.



--
Gilberto Santos:.
Analista de Sistemas
www.gilbertosantos.com || con...@gilbertosantos.com

Sun Certified Java Programmer (SCJP)

"Evitai que vossa língua se entregue à crítica, por que até mesmo uma palavra secreta não ficará sem castigo, e a boca que acusa com injustiça arrasta a alma à morte"

robson dos santos rosa

unread,
Jun 17, 2010, 10:27:17 AM6/17/10
to hibernat...@googlegroups.com
Feras,

tem um metodo fazendo um select no Banco mais estou recebendo uma exceção do Hibernate e não sei o porque alguém poderia ajudar

a query que gera essa exceção e essa aqui

select publicacao from tci.sistemaRecebimento.negocio.publicacao.PublicacaoBO
as publicacao
    join publicacao.datasPublicacao as data
    where publicacao.retranca.id = :retranca
    and publicacao.tipoMateria.id = :tipomateria
    and publicacao.sequencial = :sequencial
    and publicacao.statusPublicacao.id in (:status1,:status2) and data in ()


essa e a exceção

org.hibernate.hql.ast.QuerySyntaxException: unexpected end of subtree [ select publicacao from tci.sistemaRecebimento.negocio.publicacao.PublicacaoBO as publicacao join publicacao.datasPublicacao as data where publicacao.retranca.id = :retranca and publicacao.tipoMateria.id = :tipomateria and publicacao.sequencial = :sequencial and publicacao.statusPublicacao.id in (:status1,:status2) and data in () ]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:235)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1113)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at tci.sistemaRecebimento.persistencia.publicacao.RepositorioPublicacao.consultarPublicacoesEnviadas(RepositorioPublicacao.java:101)
at tci.sistemaRecebimento.negocio.publicacao.CadastroPublicacao.consultarPublicacaoEnviada(CadastroPublicacao.java:291)
at tci.sistemaRecebimento.negocio.publicacao.CadastroPublicacao.getStatusExistenciaArquivo(CadastroPublicacao.java:388)
at tci.sistemaRecebimento.FachadaSistemaRecebimento.getStatusExistenciaArquivo(FachadaSistemaRecebimento.java:4243)
at tci.sistemaRecebimento.gui.enviarPublicacao.EnviarPublicacaoAction.getArquivoExiste(EnviarPublicacaoAction.java:1014)
at sun.reflect.GeneratedMethodAccessor1770.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
at tci.apresentacao.gui.TCIDispatchAction.execute(Unknown Source)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at tci.requestProcessor.infra.TCIRequestProcessor.processActionPerform(TCIRequestProcessor.java:88)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)

Anizair Lopes

unread,
Jun 17, 2010, 11:36:55 AM6/17/10
to hibernat...@googlegroups.com


Chat Skype: anizair MSN: anlop...@gmail.com
Pelo que vi está faltando você finalizar sua query na linha and data in () o que se queria colocar entre os parenteses? , é mesmo necessário esta expressão ?

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Hibernate Brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para hibernat...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para hibernate-bras...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/hibernate-brasil?hl=pt-BR.



--
Anizair Lopes
Analista de Sistemas e
Desenvolvedor Java, Delphi e C#
anlop...@gmail.com
http://anlopes.blogspot.com


Site com diversas mensagens para enviar,
e também pode se cadastrar como um franqueado totalmente gratis
http://www.clubesdv.com/anlopes

O melhor treino na industria.
Aprenda como criar os seus próprios leads e
gerar um retorno imediato em qualquer empresa.
http://www.recrutafacil.com/anlopes?dorigem=assinatura

Quer comprar produto utilize a
ATVA são mais de 1200 produtos
http://www.atva.com.br/franquia/10519

Se quiseres pode abrir sua própria Franquia
ATVA
http://www.atva.com.br/quemindicou.aspx?id=10519

robson dos santos rosa

unread,
Jun 17, 2010, 12:17:52 PM6/17/10
to hibernat...@googlegroups.com
Puts cara acho que mandei a query quebrada aqui esta como ela esta, a parte  and data in (:datas) 

acho que esta completa foi eu mandei faltando essa parte, mais será que mesmo assim essa parte esta correta ?



select publicacao from tci.sistemaRecebimento.negocio.publicacao.PublicacaoBO as publicacao
        join publicacao.datasPublicacao as data
        where publicacao.retranca.id = :retranca
            and publicacao.tipoMateria.id = :tipomateria
            and publicacao.sequencial = :sequencial
            and publicacao.statusPublicacao.id in (:status1,:status2)
            and data in (:datas)











Bruno Missi Xavier

unread,
Jun 17, 2010, 10:40:47 AM6/17/10
to hibernat...@googlegroups.com
Eu apostaria no "and data in ()"

1º - Se esta data esta entre intervalos, use between.
2º - Nunca vi "in" ser utilizado com periodos de data.

Faz o teste alterando este "in" para between ou "=" e responde pra gente.

Qualquer duvida estou a disposição.




2010/6/17 robson dos santos rosa <robso...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Hibernate Brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para hibernat...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para hibernate-bras...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/hibernate-brasil?hl=pt-BR.



--
Atenciosamente,

Bruno Missi Xavier
Consultor Interno de Gestão
Tel/cel: (28) 3521-2001 / (28) 9966-7613

robson dos santos rosa

unread,
Jun 18, 2010, 7:43:29 AM6/18/10
to hibernat...@googlegroups.com
Bom dia pessoal,

consegui simular o erro e percebi que em algumas situações a data pode vim null ou " " acho que um != de null resolve meu problema no meu metodo  abaixo

na linha query.setParameterList("datas", publicacao.getDatasPublicacao());

    public Collection<PublicacaoBO> consultarPublicacoesEnviadas(
            PublicacaoBO publicacao) throws TCIRepositorioException {
        Collection<PublicacaoBO> resultado;

        StringBuffer hql = new StringBuffer();

        hql.append(" select publicacao ");
        hql.append(" from   tci.sistemaRecebimento.negocio.publicacao.PublicacaoBO as publicacao");
        hql.append(" join   publicacao.datasPublicacao as data");
        hql.append(" where  publicacao.retranca.id = :retranca  ");
        //hql.append(" and    publicacao.tipoMateria.id = :tipomateria  ");
        hql.append(" and    publicacao.sequencial = :sequencial ");
        hql.append(" and    publicacao.statusPublicacao.id in (:status1,:status2) ");
        hql.append(" and    data in (:datas) ");       

        Query query = getSession().createQuery(hql.toString());                       
        query.setLong("retranca",publicacao.getRetranca().getId());
        //query.setLong("tipomateria",publicacao.getTipoMateria().getId());
        query.setInteger("sequencial",publicacao.getSequencial());
        query.setLong("status1",PropriedadesSistemaRecebimento.getStatusPublicacaoRecebida());
        query.setLong("status2",PropriedadesSistemaRecebimento.getStatusPublicacaoEmTeste());
        query.setParameterList("datas", publicacao.getDatasPublicacao());
        resultado = (Collection<PublicacaoBO>) query.list();

        return resultado;

    }



obrigado a todos.

Henrique Moreira Lustosa Dourado

unread,
Jun 22, 2010, 8:41:35 AM6/22/10
to hibernat...@googlegroups.com
Opa brow,

Sei que se já resolveu, e não sei se vc já faz isso, mas é sempre bom nos nossos POJOS ou JavaBeans sempre garantir que os atributos não tenham valores iguais a null ou "";
Eu faço uma verificação sempre nos meus métodos setters, tipo:

public void setNome(String aNome)
{
       this.nome = (aNome==null || aNome="")?"Nome desconhecido":aNome;
}

Isso me garante a integridade de saber que os atributos sempre terão um valor padrão.

Flw.

Um abraço. E estamos aí.

2010/6/18 robson dos santos rosa <robso...@gmail.com>



--
Att,

Henrique Moreira Lustosa Dourado
Técnico em Tecnologia da Informação
Produtos, Serviços e Assistência Técnica em Informática


Tel.: (63) 3313-3103/3232-8185
Cel.: (63) 8448 - 4043
E-mail: henriq...@gmail.com
MSN:   henriq...@hotmail.com

Reply all
Reply to author
Forward
0 new messages