Como Realizar Esta Consulta com HQL ?

Java

17/02/2011

Ola pessoal, estou com uma Duvida de pesquisa utilizando o HQL.   Minha Classe de Produtos:
// *****************************************************************************
// Definindo a Tabela.
// *****************************************************************************
@Entity
@Table( name = "prod_Produtos")
public class prod_Produtos implements Serializable {
 
    // Definindo o Gerador de Sequencia Automatica.
    @Id
    @SequenceGenerator          (name       ="generator_prod_produtos",sequenceName="sequence_prod_produtos")
    @GeneratedValue             (generator  ="generator_prod_produtos")
    private Long prod_codigo;
    
    // Definindo a Coluna   :   CODIGO DE BARRAS.
    @Column(name ="prod_cod_barras", length = 20,  nullable=true, insertable=true, updatable=true)
    private String prod_cod_barras;
    
    // Definindo a Coluna   :   DATA DE CADASTRO.
    
    // Definindo a Coluna   :   DATA DE ALTERACAO.
    
    // Relacionamento com a Tabela de Categoria de Produto.
    @OneToOne
    @Cascade(CascadeType.ALL)
    @JoinColumn( name = "cod_categoria")
    private prod_Categoria categoria;
    
    
    //Definindo a Coluna    :   DESCRICAO DO NOME DO PRODUTO.
    @Column(name = "prod_descricao", length=80,     nullable=true,  insertable=true,    updatable=true)
    private String prod_descricao;
    
    
    // Relacionamento com a Tabela de Unitarios.
    @OneToOne
    @Cascade(CascadeType.ALL)
    @JoinColumn( name = "cod_unitario")
    private prod_Unitarios unitario;
    
    
    // Relacionamento com a Tabela de Fabricante.
    @OneToOne
    @Cascade(CascadeType.ALL)
    @JoinColumn( name = "cod_fabricante")
    private prod_Fabricante fabricante;
    // Relacionamento com a Tabela de Fornecedor.
    @OneToOne
    @Cascade(CascadeType.ALL)
    @JoinColumn( name = "cod_fornecedor")
    private prod_Fornecedor fornecedor;
    
    //Definindo a Coluna    :   PRECO DE CUSTO.
    @Column(name = "prod_preco_custo")
    private Double prod_preco_custo;
    
    // Definindo a Coluna   : LUCRO.
    @Column(name = "prod_lucro")
    private int    prod_preco_lucro;
    
    // Definindo a Coluna   : PRECO C/ TAXA.
    @Column(name = "prod_preco_taxa")
    private Double prod_preco_taxa;
    
    // Definindo a Coluna   : PRECO VENDA.
    @Column(name = "prod_preco_venda")
    private Double prod_preco_venda;
    
    // Definindo a Coluna   : QUANTIDADE ESTOQUE.
    @Column(name = "prod_qtde")
    private int    prod_qtde;
    
    // Definindo a Coluna   : QUANTIDADE MINIMA.
    @Column(name = "prod_qtde_minima")
    private int    prod_qtde_minima;
    
    // Relacionamento com a Tabela de Localizacao do Estoque.
    @OneToOne
    @Cascade(CascadeType.ALL)
    @JoinColumn( name = "cod_localizacao")
    private prod_Localizacao localizacao;
    
    // Definindo a Coluna   : IMAGEM DO PRODUTO.
    
    
    // Definindo a Coluna   : OBSERVACAO.
    @Column(name = "prod_observacao")
    private String  prod_obs;

  Estou querendo Realizar uma Pesquisa ao Digitar por Exemplo o Codigo de Barras, quero checar se ja nao existe um cadastro para o mesmo, estou tentando assim:  
   public boolean ExisDigitado(String CampoPESQ, String Digitado){
        
        boolean Achou = false;
        
        Session ses = getSession();
        
        JOptionPane.showMessageDialog(null, "from prod_produtos where " + CampoPESQ + " = : " + "''"+Digitado + "'");
        
        Query qry   = ses.createQuery("from prod_produtos where " + CampoPESQ + " = :" + Digitado);
        
        return Achou;        
    }
  Na hora de chamar passo como parametros o campo que quero pesquisar e o conteudo digitado na pesquisa, mais esta me retornando um erro :  
 
SEVERE: line 1:45: expecting IDENT, found '619342677674'
Exception in thread "AWT-EventQueue-0" org.hibernate.hql.ast.QuerySyntaxException: expecting IDENT, found '619342677674' near line 1, column 45 [from prod_produtos where PROD_COD_BARRAS = :619342677674]
        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.parse(QueryTranslatorImpl.java:258)
        at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
        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.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
        at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
        at DAO.prod_ProdutoDAO.ExisDigitado(prod_ProdutoDAO.java:115)
        at Formularios.FCadProdutos.BTAlterarActionPerformed(FCadProdutos.java:485)
        at Formularios.FCadProdutos.access$500(FCadProdutos.java:26)
        at Formularios.FCadProdutos$6.actionPerformed(FCadProdutos.java:406)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Estou comecando agora com Java Hibernate e tenho comprado alguns posts daqui do Site para me auxiliar, espero ter sido claro e agradeco a atencao de todos, um forte abraco.    
Ricardo Scarpim

Ricardo Scarpim

Curtidas 0

Respostas

Davi Costa

Davi Costa

17/02/2011

Voce deveria ter feito assim:

Query qry   = ses.createQuery("from prod_produtos where " + CampoPESQ + " = :digitado");
query.setString("pw", password);
prod_Produtos prod = (prod_Produtos) query.uniqueResult();//se o rsultado for único pela regra de negócio
prod_Produtos prod = (List<prod_Produtos>) query.list();//se o resultado retorna mais de um item
        return Achou;

Espero ter ajudado

Att Davi
GOSTEI 0
Dyego Carmo

Dyego Carmo

17/02/2011

Deu certo? Caso positivo , feche a pendencia por favor !
GOSTEI 0
POSTAR