Dúvidas em hibernate mappedby

4 respostas
nelios85

Pessoal, me ajudem a entender o mappedby do hibernate. Estou iniciando no ramo java e estou tendo uma primeira experiencia com o hibernate.
Bom vamos a dúvida. Tenho duas entidades, uma se chama Usuario e outra se chama Dispositivo. No caso um usuário pode ter vários dispositivos mas dispositivo pode ter apenas um usuário, no caso seria anotação ManyToOne. Vejam como estão as entidades abaixo:

Classe Usuario

@Entity
public class Usuario {
	
	@Id
	@GeneratedValue
	private Integer id_nome; 

	private String nome;
	private String departamento;
	private String cpf;

<!-- gets e sets -->
}

Classe Dispositivo

@Entity
public class Dispositivo {

	@Id
	@GeneratedValue
	private Integer id_dispositivo;
	
	private String marca;
	private String modelo;
	private String imei;
	
}

No caso, como eu faria esta associação?
Obrigado!

4 Respostas

ErickRAR

Em usuário:

public class Usuario {  

 @OneToMany(mappedBy="dispositivo")
private List<Dispositivo> dispostivos = new ArrayList<Dispositivo>(); // Ou Set<Dispostivo>

//gets e sets


   public void adicionarDispositivo(Dispositivo novoDispositivo){
      novoDispositivo.setDono(this);
      this.dispositivos.add(novoDispostivo);
   }
}

E em Dispositivo:

public class Dispositivo{

 @ManyToOne
 @JoinColumn(name="fk_usuario")
 private Usuario dono;
//gets/sets
}
nelios85

Bom… em Dispositivo, posso colocar assim?

public class Dispositivo {

	@Id
	@GeneratedValue
	private Long id;
	private String modelo;
	private String imei;
	
	@ManyToOne
	@JoinColumn
	private Usuario fk_usuario;
	
}
ErickRAR

Pode botar até private Usuario chuck_NORRIS; se quiser,porém:
1- Fugirá da convenção de código Java.
2- O nome fica sem sentido e com uma legibilidade horrível.
3- Em alguns anos você irá achar o código desse projeto e pensar: Meu deus,[color=yellow]como um dia pensei que Chuck Norris fosse melhor que Bruce Lee[/color] , como foi que eu tive coragem de escrever isso?

nelios85

hahahahaha… entendi. É pq eu fiquei na dúvida no (name="") se era necessário, mas já entendi.

Obrigado camarada.

Criado 5 de setembro de 2014
Ultima resposta 5 de set. de 2014
Respostas 4
Participantes 2