Erro de Relacionamentos com @OneToMany e @ManyToOne

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

Cara, pensando no que você falou: um setor para muito usuários, ou seja, @OneToMany (Setor para usuários). Nesse caso, você precisa declarar uma Collection de usuários, algo como:

@OneToMany private Collection<Usuario> usuario; ;

Dessa forma você tem na sua classe Setor, o atributo usuario, onde o mesmo é do tipo Usuário, na verdade vocẽ tem uma coleção desse objeto.