Que erro de mapeamento é este?

Caros,

Está ocorrendo este erro quando tento executar a consulta abaixo.

Caused by javax.servlet.ServletException with message: “org.hibernate.hql.ast.QuerySyntaxException: Empresas is not mapped [SELECT emp FROM Empresas emp where lower(emp.NomeEmpresa) like ‘nitro%’]”

Eis o método com a consulta:

public List autocompleteNome(Object suggest) {

String pref = (String) suggest;
String sql = "SELECT emp FROM Empresas emp where lower(emp.NomeEmpresa) like  '" + pref + "%'";
Query query = entityManager.createQuery(sql);
List<Empresas> result = null;
            result = (List<Empresas>) entityManager.createQuery(sql).getResultList();
           return result;

}

Alguém tem idéia do que possa ser?

Eis a classe mapeada:

@Table(name=“tbempresa”)
@Name(“empresas”)

public class Empresas {

@Id
@GeneratedValue(strategy=IDENTITY)
private Integer cd_emp;

 @OneToMany(mappedBy="empresas", fetch=LAZY, cascade=ALL)
  private Set<BaseDados> basedados;

 @Column(name="cdempresa")
 private int cdEmpresa;
 
 @Column(name="nrsequencia")
 private int nrsequencia;

 @Column(name="nomeempresa")
 private String  nomeEmpresa;
 
 @Column(name="cnpj")
 private String cnpj;
 
 @Column(name="endereco")
 private String endereco;
 
 @Column(name="bairro")
 private String bairro;
 
 @Column(name="cidade")
 private String cidade;
 
 @Column(name="cep")
 private String cep;
 
 @Column(name="estado")
 private String estado;
 
 @Column(name="site")
 private String site;
 
 @Column(name="email")
 private String email;

/**
 * @return the cd_emp
 */
public Integer getCd_emp() {
	return cd_emp;
}

/**
 * @param cd_emp the cd_emp to set
 */
public void setCd_emp(Integer cd_emp) {
	this.cd_emp = cd_emp;
}

/**
 * @return the basedados
 */
public Set<BaseDados> getBasedados() {
	return basedados;
}

/**
 * @param basedados the basedados to set
 */
public void setBasedados(Set<BaseDados> basedados) {
	this.basedados = basedados;
}

/**
 * @return the cdEmpresa
 */
public int getCdEmpresa() {
	return cdEmpresa;
}

/**
 * @param cdEmpresa the cdEmpresa to set
 */
public void setCdEmpresa(int cdEmpresa) {
	this.cdEmpresa = cdEmpresa;
}

/**
 * @return the rrsequencia
 */
public int getNrsequencia() {
	return nrsequencia;
}

/**
 * @param rrsequencia the rrsequencia to set
 */
public void setNrsequencia(int nrsequencia) {
	this.nrsequencia = nrsequencia;
}

/**
 * @return the nomeEmpresa
 */
public String getNomeEmpresa() {
	return nomeEmpresa;
}

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

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

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

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

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

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

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

/**
 * @return the cidade
 */
public String getCidade() {
	return cidade;
}

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

/**
 * @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 site
 */
public String getSite() {
	return site;
}

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

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

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

/* (non-Javadoc)
 * @see java.lang.Object#hashCode()
 */
@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((cd_emp == null) ? 0 : cd_emp.hashCode());
	return result;
}

/* (non-Javadoc)
 * @see java.lang.Object#equals(java.lang.Object)
 */
@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	final Empresas other = (Empresas) obj;
	if (cd_emp == null) {
		if (other.cd_emp != null)
			return false;
	} else if (!cd_emp.equals(other.cd_emp))
		return false;
	return true;
}

}

Cara, voce tem que declarar seu arquivo de mapeamento Empresa.hbm.xml no hibernate.cfg.xml

Ate mais

Creio que você precisa anotar a classe Empresas com “@Entity”.

Olá Mariano,

Primeiramente, quando for postar código fonte, utilize a tag code (olhe em cima do editor de texto aqui do GUJ).

Quando ao seu problema, como o Roger falow, falta adicionar a anotação @Entity na sua classe.

O Vini Fernandes falou de arquivo hbm, mas vc está usando anotações e não há necessidade de usar hbms, pois o mapeamento está sendo feito via anotações.

[]´s

Recebam os meus agradecimentos.

O problema era somente a ausência da @Entity na classe… é a falta de experiência com anotações!

Obrigado,
Mariano