References an unknown entity

6 respostas
R

Pow estou iniciando no Hibernate e ele está retornando o seguinte erro:

org.hibernate.AnnotationException: @OneToOne or @ManyToOne on model.Usuarios.unidadesId references an unknown entity: model.Unidades
org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81)
org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:456)
org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:438)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:309)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1319)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
model.HibernateUtility.getSessionFactory(HibernateUtility.java:25)
model.DaoUsuarios.(DaoUsuarios.java:18)
control.loginServlet.processRequest(loginServlet.java:36)
control.loginServlet.doGet(loginServlet.java:55)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

Aqui estão minhas classes:

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

package model;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(name = "usuarios", catalog = "church", schema = "")
@NamedQueries({@NamedQuery(name = "Usuarios.findAll", query = "SELECT u FROM Usuarios u"), @NamedQuery(name = "Usuarios.findById", query = "SELECT u FROM Usuarios u WHERE u.id = :id"), @NamedQuery(name = "Usuarios.findByNome", query = "SELECT u FROM Usuarios u WHERE u.nome = :nome"), @NamedQuery(name = "Usuarios.findByUsuario", query = "SELECT u FROM Usuarios u WHERE u.usuario = :usuario"), @NamedQuery(name = "Usuarios.findBySenha", query = "SELECT u FROM Usuarios u WHERE u.senha = :senha"), @NamedQuery(name = "Usuarios.findByDtreg", query = "SELECT u FROM Usuarios u WHERE u.dtreg = :dtreg"), @NamedQuery(name = "Usuarios.findByPerfilUsuariosid", query = "SELECT u FROM Usuarios u WHERE u.perfilUsuariosid = :perfilUsuariosid")})
public class Usuarios implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "id")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "nome")
    private String nome;
    @Basic(optional = false)
    @Column(name = "usuario")
    private String usuario;
    @Column(name = "senha")
    private String senha;
    @Basic(optional = false)
    @Column(name = "dtreg")
    @Temporal(TemporalType.DATE)
    private Date dtreg;
    @Basic(optional = false)
    @Column(name = "perfil_usuariosid")
    private int perfilUsuariosid;
    @JoinColumn(name = "unidadesId", referencedColumnName = "id")
    @ManyToOne
    private Unidades unidadesId;

    public Usuarios() {
    }

    public Usuarios(Integer id) {
        this.id = id;
    }

    public Usuarios(Integer id, String nome, String usuario, Date dtreg, int perfilUsuariosid) {
        this.id = id;
        this.nome = nome;
        this.usuario = usuario;
        this.dtreg = dtreg;
        this.perfilUsuariosid = perfilUsuariosid;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public Date getDtreg() {
        return dtreg;
    }

    public void setDtreg(Date dtreg) {
        this.dtreg = dtreg;
    }

    public int getPerfilUsuariosid() {
        return perfilUsuariosid;
    }

    public void setPerfilUsuariosid(int perfilUsuariosid) {
        this.perfilUsuariosid = perfilUsuariosid;
    }

    public Unidades getUnidadesId() {
        return unidadesId;
    }

    public void setUnidadesId(Unidades unidadesId) {
        this.unidadesId = unidadesId;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuarios)) {
            return false;
        }
        Usuarios other = (Usuarios) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "model.Usuarios[id=" + id + "]";
    }

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

package model;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(name = "unidades", catalog = "church", schema = "")
@NamedQueries({@NamedQuery(name = "Unidades.findAll", query = "SELECT u FROM Unidades u"), @NamedQuery(name = "Unidades.findById", query = "SELECT u FROM Unidades u WHERE u.id = :id"), @NamedQuery(name = "Unidades.findByDescricao", query = "SELECT u FROM Unidades u WHERE u.descricao = :descricao"), @NamedQuery(name = "Unidades.findByDtreg", query = "SELECT u FROM Unidades u WHERE u.dtreg = :dtreg")})
public class Unidades implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "id")
    private Integer id;
    @Column(name = "descricao")
    private String descricao;
    @Basic(optional = false)
    @Column(name = "dtreg")
    @Temporal(TemporalType.DATE)
    private Date dtreg;
    @OneToMany(mappedBy = "unidadesId")
    private Collection<Usuarios> usuariosCollection;

    public Unidades() {
    }

    public Unidades(Integer id) {
        this.id = id;
    }

    public Unidades(Integer id, Date dtreg) {
        this.id = id;
        this.dtreg = dtreg;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public Date getDtreg() {
        return dtreg;
    }

    public void setDtreg(Date dtreg) {
        this.dtreg = dtreg;
    }

    public Collection<Usuarios> getUsuariosCollection() {
        return usuariosCollection;
    }

    public void setUsuariosCollection(Collection<Usuarios> usuariosCollection) {
        this.usuariosCollection = usuariosCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Unidades)) {
            return false;
        }
        Unidades other = (Unidades) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "model.Unidades[id=" + id + "]";
    }

}

Classe DAOUsuarios

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

package model;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;


public class DaoUsuarios {

Session sessao = HibernateUtility.getSessionFactory(Usuarios.class).openSession();
Transaction tx = sessao.beginTransaction();



public Usuarios logar(String usuario, String senha){
    Usuarios usuarios=null;

    Query q = sessao.createQuery("from usuarios where usuario= :usuario and senha= :senha");
    q.setParameter("usuario", usuario);
    q.setParameter("senha", senha);

    usuarios= (Usuarios) q.uniqueResult();
    tx.commit();
    sessao.flush();
    sessao.close();


    return usuarios;
   
}

}

6 Respostas

LeonardoPinto

As classes estão declaradas no persistence.xml?

R

Não estou nem usando ele.
Fiz um crud em outra classe e funcionou normalmente… e nem declarei ela para isso.

LeonardoPinto

Se estiver rodando em um container (glassfish por exemplo) é provavel que vc precise do arquivo sim…

R

Pow… estou rodando no Tomcat.
Estranho precisar dele se a outra classe funcionou normalmente. Seria por causa da chave estrangeira?

Mas como eu configuro ele então?

Valeu awe.

andreiribas

provavelmente o erro está onde você constrói a annotatedsessionfactory, mais especificamente onde você adiciona as classes do modelo para serem escaneadas pelo hibernate.

R

O problema era lá mesmo.
Eu não estava passando a outra classe no cfg.addAnnotatedClass.

Valeu pela ajuda.

Criado 19 de fevereiro de 2009
Ultima resposta 19 de fev. de 2009
Respostas 6
Participantes 3