Olá boa tarde galera,
estou com o seguinte problema:
Tenho uma classe Usuario que é @OneToMany para uma outra chamada Acesso e tenho uma outra chamada Perfil que também é @OneToMany para Acesso. Já na classe Acesso tenho um @ManyToOne para Usuario e @ManyToOne para Perfil.
Ao executar da o seguinte erro: org.hibernate.AnnotationException: Property of @IdClass not found in entity com.model.Acesso: idperfil
AcessoPK:
package com.model;
public class AcessoPK {
private int idperfil;
private int idusuario;
public AcessoPK(){
}
public int getIdPerfil() {
return idperfil;
}
public void setIdPerfil(int idPerfil) {
this.idperfil = idPerfil;
}
public int getIdusuario() {
return idusuario;
}
public void setIdusuario(int idusuario) {
this.idusuario = idusuario;
}
}
Acesso:
package com.model;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "ACESSO")
@IdClass(value=AcessoPK.class)
public class Acesso {
@Id
@ManyToOne
@JoinColumn(name="idusuario", referencedColumnName="idusuario")
private Usuario usuario;
@Id
@ManyToOne
@JoinColumn(name="idperfil", referencedColumnName="idperfil")
private Perfil perfil;
private String login;
private String senha;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
Perfil:
package com.model;
import java.sql.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "PERFIL")
@SequenceGenerator(name="seq_perfil_id", sequenceName="seq_perfil_id", allocationSize=1)
public class Perfil {
@Id
@GeneratedValue(generator="seq_perfil_id", strategy=GenerationType.SEQUENCE)
private int idperfil;
private String nome;
@OneToMany(mappedBy="perfil")
private List<Acesso> listaAcessos;
public int getIdperfil() {
return idperfil;
}
public void setIdperfil(int idperfil) {
this.idperfil = idperfil;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public int hashCode() {
return getIdperfil();
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Perfil){
Perfil user = (Perfil) obj;
return user.getIdperfil() == getIdperfil();
}
return false;
}
}
Usuario:
package com.model;
import java.sql.Date;
import java.util.List;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "USUARIO")
@NamedQuery(name="User.findUserByEmail", query="select u from Usuario u where u.email = :email")
@SequenceGenerator(name="seq_usuario_id", sequenceName="seq_usuario_id", allocationSize=1)
public class Usuario {
private static final long serialVersionUID = -8121617132071401241L;
public static final String FIND_BY_EMAIL = "User.findUserByEmail";
@Id
@GeneratedValue(generator="seq_usuario_id", strategy=GenerationType.SEQUENCE)
private int idusuario;
@Column(unique = true)
private String email;
private String senha;
private String nome;
private String sobrenome;
private String cpf;
private String rg;
private String orgaoexpedidor;
private String foto;
private char sexo;
private String estadocivil;
private Date datanascimento;
private String telefone;
private String celular;
private char ativo;
private String role;
@ManyToOne
@JoinColumn(name="idendereco", referencedColumnName="idendereco")
private Endereco endereco;
@ManyToMany
@JoinTable(
name="usuarioclinica",
joinColumns=@JoinColumn(name="idusuario"),
inverseJoinColumns=@JoinColumn(name="idclinica")
)
private Set<Clinica> clinicas;
@OneToMany(mappedBy="usuario")
private List<Acesso> listaAcessos;
public int getIdusuario() {
return idusuario;
}
public void setIdusuario(int idusuario) {
this.idusuario = idusuario;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getSobrenome() {
return sobrenome;
}
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public String getOrgaoexpedidor() {
return orgaoexpedidor;
}
public void setOrgaoexpedidor(String orgaoexpedidor) {
this.orgaoexpedidor = orgaoexpedidor;
}
public String getFoto() {
return foto;
}
public void setFoto(String foto) {
this.foto = foto;
}
public char getSexo() {
return sexo;
}
public void setSexo(char sexo) {
this.sexo = sexo;
}
public String getEstadocivil() {
return estadocivil;
}
public void setEstadocivil(String estadocivil) {
this.estadocivil = estadocivil;
}
public Date getDatanascimento() {
return datanascimento;
}
public void setDatanascimento(Date datanascimento) {
this.datanascimento = datanascimento;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public char getAtivo() {
return ativo;
}
public void setAtivo(char ativo) {
this.ativo = ativo;
}
@Override
public int hashCode() {
return getIdusuario();
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Usuario){
Usuario user = (Usuario) obj;
return user.getEmail().equals(getEmail());
}
return false;
}
}