Como representar um auto relacionamento, usando JPA?

Olá pessoal, estou fazendo uma aplicação para desktop que envolve algumas entidades.

Mas surgiu a dúvida de como faço o mapeamento usando Anotations nesse auto relacionamento.

Na entidade Usuário: Usuário cadastra (0:N) usuários e 1 usuário é cadastrado por (1:1) usuário. Eu deixei uma única entidade p/ usuário, porque os atributos são comuns tanto para o administrador, quanto para o funcionário, aí o que vai diferenciar é um campo char, que vai armazenar A ou F no banco.

Mas como devo fazer essa anotação no auto relacionamento?
Tô procurando na internet desde ontem e não encontro nada que ajude!

segue parte do mapeamento

    @Entity  
    public class Usuario {  
      
        @Id  
        @GeneratedValue(strategy=GenerationType.IDENTITY)  
        private int codigo; 

        private char tipoUsuario;
        
        @ManyToOne
        @JoinColumn(name="cidade")
        private Cidade cidade;   
      
        public Usuario() {}  
     
   }  

Agradeço quem puder ajudar!

Não entendi direito o que você quer fazer no relacionamento do usuário…

Um usuário não cadastra outro, mas um usuário cadastra um usuário…

Não entendi direito o que você quer fazer…

[quote=tandrade86]Não entendi direito o que você quer fazer no relacionamento do usuário…

Um usuário não cadastra outro, mas um usuário cadastra um usuário…

Não entendi direito o que você quer fazer…[/quote]

Pode acontecer de um usuário cadastrado no banco, nunca cadastrar ninguém, como também poderá acontecer dele cadastrar N usuários. Por isos coloquei (0:N)

E no momento do cadastro, um usuário é cadastrado por um usuário, por isso coloquei (1:1)

Espero ter esclarecido agora.

Mas continuo sem saber se o mapeamento está certo ou não.

Segue o código abaixo, e espero que alguém que já fez esse tipo de mapeamento fale alguma coisa!

[code]

@Entity
public class Usuario {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int codigo;
private char tipoUsuario;

@OneToMany
private List<Usuario> usuarios = new ArrayList<Usuario>();

@JoinColumn(name="usuario")
@ManyToOne
private Usuario usuario;

public Usuario() {}

}[/code]