Comando para "procurar" no hibernete

5 respostas
R

Pessoal, estou aqui fazendo o meu bd com postegres e com hibernate.
Estou muito feliz pois estou começando a entender o funcionamento dele.

Só que tem um porem, na hora que eu peço para o meu aplicativo procurar uma
palavar no banco de dados, ele acha se eu digitar exatamente a palavra.
Por exemplo, no banco de dados eu tenho o campo nome e nele esta os nomes
roberto, ronaldo, renato, fernando e camilo .
Eu quero que no meu aplicativo quando eu peço para pesquisar, eu apenas precise
colocar a letra “r” por exemplo, para que apareça no meu campo pesquisa, todos
os nomes que comecem com a letra “r”, caso eu nao lembre o nome da pessoa…

Dei uma olhada no google e achei o codigo assim só que nao funcionou:

query.setParameter("nome", nome+"%");

Ele da o seguinte erro:

No entity found for query

Agradeço desde já!

Obrigado!

5 Respostas

otavio

Veja se você mapeou a entidade no arquivo de configuração do hibernate.

Abs

R

Desculpa a pergunta meio cretina, mas aonde devo mapeala? Ou melhor, oq devo colocar?
O meu arquivo de configuraçao é esse:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="JPATutorialPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>jpatutorial.Address</class>
    <properties>
      <property name="hibernate.connection.username" value="postgres"/>
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
      <property name="hibernate.connection.password" value="123456"/>
      <property name="hibernate.connection.url" value="jdbc:postgresql://128.0.0.1:5544/postgres"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
    </properties>
  </persistence-unit>
</persistence>

E aqui a classe do meu programa:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package empresa;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Empresa implements Serializable {

    @Id
   // @GeneratedValue(strategy = GenerationType.AUTO)

    private String cnpj;
    private String nome;
    private String endereco;
    private String numero;
    private String complemento;
    private String bairro;
    private String estado;
    private String cep;
    private String telfixo;
    private String celular;
    private String fax;
    private String email;

    public Empresa() {
    }

    

    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the endereco
     */
    public String getEndereco() {
        return endereco;
    }

    /**
     * @param endereco the endereco to set
     */
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    /**
     * @return the numero
     */
    public String getNumero() {
        return numero;
    }

    /**
     * @param numero the numero to set
     */
    public void setNumero(String numero) {
        this.numero = numero;
    }

    /**
     * @return the complemento
     */
    public String getComplemento() {
        return complemento;
    }

    /**
     * @param complemento the complemento to set
     */
    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    /**
     * @return the bairro
     */
    public String getBairro() {
        return bairro;
    }

    /**
     * @param bairro the bairro to set
     */
    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    /**
     * @return the cep
     */
    public String getCep() {
        return cep;
    }

    /**
     * @param cep the cep to set
     */
    public void setCep(String cep) {
        this.cep = cep;
    }

    /**
     * @return the estado
     */
    public String getEstado() {
        return estado;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstado(String estado) {
        this.estado = estado;
    }

    /**
     * @return the telfixo
     */
    public String getTelfixo() {
        return telfixo;
    }

    /**
     * @param telfixo the telfixo to set
     */
    public void setTelfixo(String telfixo) {
        this.telfixo = telfixo;
    }

    /**
     * @return the celular
     */
    public String getCelular() {
        return celular;
    }

    /**
     * @param celular the celular to set
     */
    public void setCelular(String celular) {
        this.celular = celular;
    }

    /**
     * @return the fax
     */
    public String getFax() {
        return fax;
    }

    /**
     * @param fax the fax to set
     */
    public void setFax(String fax) {
        this.fax = fax;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the cnpj
     */
    public String getCnpj() {
        return cnpj;
    }

    /**
     * @param cnpj the cnpj to set
     */
    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }


}
R

poxa, ninguem sabe não?

diogoprosoft

Bom vamos por parte vc deve mapear sua classe dessa maneira

@Entity
@Table(name="pessoa")
public class pessoa implements Serializable{

@Id    
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "id_pessoa", unique=true)
	private Integer idPessoa;
	
	@Column(name = "nm_pessoa", unique=true, length=50)
	private String nmPessoa;
}

Ai la na sua Persistencia ficara assim

public List listarFiltro(Class clazz) throws Exception
    {
        Session session = HibernateFactory.getSession();
        Transaction transaction = session.beginTransaction();

        List objts;
        objts = null;
        Criteria criteria = session.createCriteria(clazz);
        Criterion crit = Restrictions.sqlRestriction(" nome like '%r%' ");
        criteria.add(crit);
        transaction.commit();
        objts = criteria.list();
        session.close();
        return objts;
    }
otavio

Caro RW, você tem essa classe mapeada (e somente ela) no seu persistence.xml conforme a linha

Porém tenta fazer consulta usando a classe Empresa, ou seja, tem que avisar pro Hibernate quais as classes você quer mapear :slight_smile:

Criado 8 de março de 2009
Ultima resposta 10 de mar. de 2009
Respostas 5
Participantes 3