Caros, estou aprendendo Java…estava seguindo um tutorial e desenvolvendo um projeto simples onde existe uma classe Setor e uma Usuário… Onde Setor pode está relacionado com vários Usuários… Utilizei os relacionamentos @OneToMany e @ManyToOne foi aí que ocorreu o erro, segundo a Exception do console…utilizo também Spring , mas esse está funcionando perfeitamente. A seguir as classes e o erro :
Classe Setor:
package br.com.sistemaDeProtocolo.model.entities;
import br.com.sistemaDeProtocolo.model.Entidade;
import br.com.sistemaDeProtocolo.annotation.RequiredField;
import javax.persistence.Entity;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@SuppressWarnings("serial")
@Entity
@Table(name = "Setor")
public class Setor extends Entidade{
@Id
@GeneratedValue
@OneToMany(targetEntity = Usuario.class, mappedBy = "Setor")
@Column(name = "codigo_setor")
private int codigo_setor;
@Column(name="descricao_setor")
@RequiredField
private String descricao_setor;
//_________________________________________________________________________________________
//Construtores
public Setor() {
super();
}
public Setor(int codigoSetor, String descricaoSetor) {
super();
codigo_setor = codigoSetor;
this.descricao_setor = descricaoSetor;
}
//_________________________________________________________________________________________
//Métodos Getters & Setters
@Override
public long getCodigo() {
// TODO Auto-generated method stub
return (int) getCodigo_setor();
}
public int getCodigo_setor() {
return codigo_setor;
}
public void setCodigo_setor(int codigoSetor) {
codigo_setor = codigoSetor;
}
public String getDescricao_setor() {
return descricao_setor;
}
public void setDescricao_setor(String descricaoSetor) {
this.descricao_setor = descricaoSetor;
}
@Override
public String getSearchColumnTable() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getSearchColumnEntity() {
// TODO Auto-generated method stub
return null;
}
//_________________________________________________________________________________________
//Método toString
public String toString() {
return "Setor [codigo_setor=" + codigo_setor + ", descricao_setor="
+ descricao_setor + "]";
}
//_________________________________________________________________________________________
}
Classe Usuario:
//Usuario.java
package br.com.sistemaDeProtocolo.model.entities;
import br.com.sistemaDeProtocolo.model.Entidade;
import br.com.sistemaDeProtocolo.annotation.RequiredField;
import javax.persistence.Entity;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@SuppressWarnings("serial")
@Entity
@Table(name = "Usuario")
public class Usuario extends Entidade{
@Id
@GeneratedValue
@Column(name ="codigo_usuario")
private int codigo_usuario;
@ManyToOne(optional = false, targetEntity = Setor.class)
@JoinColumn(name = "codigo_setor", referencedColumnName = "codigo_setor")
@RequiredField
private Setor setor;
@Column(name ="nome")
@RequiredField
private String nome;
@Column(name ="ativo")
@RequiredField
private boolean ativo;
@Column(name ="senha")
@RequiredField
private String senha;//Criptografada
@Column(name ="email")
@RequiredField
private String email;
//________________________________________________________________________________________
//Construtores
public Usuario(){}
public Usuario(Setor setor, String nome,
boolean ativo, String senha, String email) {
super();
this.setor = setor;
this.nome = nome;
this.ativo = ativo;
this.senha = senha;
this.email = email;
}
//_________________________________________________________________________________________
//Métodos Getters & Setters
@Override
public long getCodigo() {
// TODO Auto-generated method stub
return (int) getCodigo_usuario();
}
public Setor setor() {
return setor;
}
public void setSetor(Setor setor) {
this.setor = setor;
}
public int getCodigo_usuario() {
return codigo_usuario;
}
//Método utilizado pelo Hibernate
@SuppressWarnings("unused")
private void setCodigo_usuario(int codigoUsuario) {
codigo_usuario = codigoUsuario;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public boolean isAtivo() {
return ativo;
}
public void setAtivo(boolean ativo) {
this.ativo = ativo;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String getSearchColumnTable() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getSearchColumnEntity() {
// TODO Auto-generated method stub
return null;
}
//_________________________________________________________________________________________
//Método toString
public String toString() {
return "Usuario [Setor=" + setor + "ativo=" + ativo + ", codigo_usuario=" + codigo_usuario + ", email=" + email
+ ", nome=" + nome + ", senha=" + senha + "]";
}
//_________________________________________________________________________________________
}
E aqui o erro apresentado :
Caused by: org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: br.com.sistemaDeProtocolo.model.entities.Setor.codigo_setor
at org.hibernate.cfg.annotations.CollectionBinder.getCollectionBinder(CollectionBinder.java:316)
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1651)
at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:769)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:733)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:636)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:359)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1206)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
... 80 more