Como representar um auto relacionamento, usando JPA?

2 respostas
andersonrc

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!

2 Respostas

T

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…

andersonrc
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...

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!

@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() {}

}
Criado 10 de junho de 2010
Ultima resposta 10 de jun. de 2010
Respostas 2
Participantes 2