Bom dia.
Eu possuo um banco de dados com 2 tabelas de relacionamento N para 1: Acesso e Funcao
A tabela Funcao contém os dados para acesso das funções do sistema pelo usuário.
A tabela acesso contém a relação entre usuario e funcao, ou seja, o que cada usuário pode acessar no sistema.
package entidades;
import java.io.Serializable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
/**
*
* @author danielti
*/
@Entity
@Table(name = "acesso")
@NamedQueries({@NamedQuery(name = "Acesso.findAll", query = "SELECT a FROM Acesso a"),
@NamedQuery(name = "Acesso.FindPerfil", query = "SELECT a FROM Acesso a WHERE a.acessoPK.usuarioid = :usuarioid"),
@NamedQuery(name = "Acesso.findByFuncaoId", query = "SELECT a FROM Acesso a WHERE a.acessoPK.funcaoId = :funcaoId")})
public class Acesso implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected AcessoPK acessoPK;
@JoinColumn(name = "funcao_id", referencedColumnName = "id" , insertable = false, updatable = false)
@ManyToOne(optional = false)
private Funcao funcao;
@JoinColumn(name = "Usuario_id", referencedColumnName = "id" , insertable = false, updatable = false)
@ManyToOne(optional = false)
private Usuario usuario;
public Acesso() {
}
public Acesso(AcessoPK acessoPK) {
this.acessoPK = acessoPK;
}
public Acesso(int usuarioid, int funcaoId) {
this.acessoPK = new AcessoPK(usuarioid, funcaoId);
}
public AcessoPK getAcessoPK() {
return acessoPK;
}
public void setAcessoPK(AcessoPK acessoPK) {
this.acessoPK = acessoPK;
}
public Funcao getFuncao() {
return funcao;
}
public void setFuncao(Funcao funcao) {
this.funcao = funcao;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
@Override
public int hashCode() {
int hash = 0;
hash += (acessoPK != null ? acessoPK.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 Acesso)) {
return false;
}
Acesso other = (Acesso) object;
if ((this.acessoPK == null && other.acessoPK != null) || (this.acessoPK != null && !this.acessoPK.equals(other.acessoPK))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entidades.Acesso[acessoPK=" + acessoPK + "]";
}
}
package entidades;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
*
* @author danielti
*/
@Entity
@Table(name = "funcao")
@NamedQueries({@NamedQuery(name = "Funcao.findAll", query = "SELECT f FROM Funcao f"), @NamedQuery(name = "Funcao.findById", query = "SELECT f FROM Funcao f WHERE f.id = :id"), @NamedQuery(name = "Funcao.findByDescricao", query = "SELECT f FROM Funcao f WHERE f.descricao = :descricao"), @NamedQuery(name = "Funcao.findByGrupoFuncaoId", query = "SELECT f FROM Funcao f WHERE f.grupoFuncaoId = :grupoFuncaoId"), @NamedQuery(name = "Funcao.findByUrlLink", query = "SELECT f FROM Funcao f WHERE f.urlLink = :urlLink")})
public class Funcao implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Column(name = "descricao")
private String descricao;
@Column(name = "grupo_funcao_id")
private Integer grupoFuncaoId;
@Basic(optional = false)
@Column(name = "url_link")
private String urlLink;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "funcao")
private Collection<Acesso> acessoCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "funcao")
private Collection<FuncaoUsuario> funcaoUsuarioCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "funcao")
private Collection<PerfilGrupo> perfilGrupoCollection;
public Funcao() {
}
public Funcao(Integer id) {
this.id = id;
}
public Funcao(Integer id, String urlLink) {
this.id = id;
this.urlLink = urlLink;
}
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 Integer getGrupoFuncaoId() {
return grupoFuncaoId;
}
public void setGrupoFuncaoId(Integer grupoFuncaoId) {
this.grupoFuncaoId = grupoFuncaoId;
}
public String getUrlLink() {
return urlLink;
}
public void setUrlLink(String urlLink) {
this.urlLink = urlLink;
}
public Collection<Acesso> getAcessoCollection() {
return acessoCollection;
}
public void setAcessoCollection(Collection<Acesso> acessoCollection) {
this.acessoCollection = acessoCollection;
}
public Collection<FuncaoUsuario> getFuncaoUsuarioCollection() {
return funcaoUsuarioCollection;
}
public void setFuncaoUsuarioCollection(Collection<FuncaoUsuario> funcaoUsuarioCollection) {
this.funcaoUsuarioCollection = funcaoUsuarioCollection;
}
public Collection<PerfilGrupo> getPerfilGrupoCollection() {
return perfilGrupoCollection;
}
public void setPerfilGrupoCollection(Collection<PerfilGrupo> perfilGrupoCollection) {
this.perfilGrupoCollection = perfilGrupoCollection;
}
@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 Funcao)) {
return false;
}
Funcao other = (Funcao) 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 "entidades.Funcao[id=" + id + "]";
}
}
select
funcao0_.id as id16_0_,
funcao0_.descricao as descricao16_0_,
funcao0_.grupo_funcao_id as grupo3_16_0_,
funcao0_.url_link as url4_16_0_
from
funcao funcao0_
where
funcao0_.id=?
O erro gerado:
entidades.Acesso cannot be cast to entidades.Funcao
Alguém pode me ajudar?
Diga-se de passsagem, eu sou novato em hibernate.
Muito obrigado,