Mapeamento com Hibernate Annotations

Pessoal, como faço para mapear um atributo que é do tipo da própria classe?
Por exemplo… tenho uma tabela de setores, onde cada setor pode (ou não) possuir um setor superior. (No banco é uma chave extrangeira para a mesma tabela).
Minha classe Setor está assim:

package br.com.progov.intranetlibrary.entidade;


@Entity
@Table(name="int_setores")
public class Setor {
    
    private Integer codigoSetor;
    private String controle;
    private String descricao;
    private char ultimoNivel = 's';
    private SetorNivel codigoSetorNivel;
    private Setor setorSuperior;
    
    
    public Setor() {
    }
    
    
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    public Integer getCodigoSetor() {
        return codigoSetor;
    }
    
    public void setCodigoSetor(Integer codigo) {
        this.codigoSetor = codigo;
    }
    
    public String getControle() {
        return controle;
    }
    
    public void setControle(String controle) {
        this.controle = controle;
    }
    
    public String getDescricao() {
        return descricao;
    }
    
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    
    public char getUltimoNivel() {
        return ultimoNivel;
    }
    
    public void setUltimoNivel(char ultimoNivel) {
        this.ultimoNivel = ultimoNivel;
    }
    
    @ManyToOne
    public SetorNivel getCodigoSetorNivel() {
        if (codigoSetorNivel == null){
            codigoSetorNivel = new SetorNivel();
        }
        return codigoSetorNivel;
    }
    
    public void setCodigoSetorNivel(SetorNivel codigoNivel) {
        this.codigoSetorNivel = codigoNivel;
    }
    
    @ManyToOne
    @JoinColumn(name="codigoSetor", nullable=true)
    public Setor getSetorSuperior() {
        return setorSuperior;
    }
    
    public void setSetorSuperior(Setor setorSuperior) {
        this.setorSuperior = setorSuperior;
    }
    
           
    
}

O problema está no mapeamento do setor superior:
@ManyToOne
@JoinColumn(name=“codigoSetor”, nullable=true)
public Setor getSetorSuperior() {
return setorSuperior;
}

Está apresentando o erro:
[b]
Exception in thread “main” java.lang.ExceptionInInitializerError
at br.com.progov.hibernate.HibernateUtil.(HibernateUtil.java:31)
at br.com.progov.dao.hibernateimpl.GenericoDAOHibernateImpl.selectById(GenericoDAOHibernateImpl.java:80)
at testes.SetorPersistencia.main(SetorPersistencia.java:15)
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: br.com.progov.intranetlibrary.entidade.Setor column: codigoSetor (should be mapped with insert=“false” update=“false”)
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:605)
at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:627)
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:645)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:420)
at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1099)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1284)
at br.com.progov.hibernate.HibernateUtil.(HibernateUtil.java:28)
… 2 more

[/b]

Quando utilizava o .hbm.xml, o mapeamento era assim:

Consegui resolver mapeando os 2 relacionamentos da seguinte maneira:

@ManyToOne
@JoinColumn(name=“codigoSetorNivel”, nullable=false)
public SetorNivel getCodigoSetorNivel() {
return codigoSetorNivel;
}

@ManyToOne
@JoinColumn(name=“setorSuperior”, nullable=true)
public Setor getSetorSuperior() {
return setorSuperior;
}