Como Realizar Esta Consulta com HQL ?
Ola pessoal, estou com uma Duvida de pesquisa utilizando o HQL.
Minha Classe de Produtos:
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:
Na hora de chamar passo como parametros o campo que quero pesquisar e o conteudo digitado na pesquisa, mais esta me retornando um erro :
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.
// *****************************************************************************
// 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;
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;
}
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)
Ricardo Scarpim
Curtidas 0
Respostas
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
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
17/02/2011
Deu certo?
Caso positivo , feche a pendencia por favor !
GOSTEI 0