En el post anterior hemos trabajado con el concepto de Persona y Factura construyendo una relación entre la Factura y la Persona a la que la factura pertenece .En este post construiremos la relación del otro lado entre la Persona y la Factura.
Para ello el primer paso será añadir una variable de tipo List<Factura> dentro de la clase Persona.
public class Persona { private String nombre; private int edad; List<Factura> milista= new ArrayList<Factura>(); public Persona() { super(); // TODO Auto-generated constructor stub } public Persona(String nombre, int edad) { super(); this.nombre = nombre; this.edad = edad; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; }
El siguiente paso será anotar la clase de la forma correcta para que soporte la relación. En este caso utilizaremos la anotación @ OneToMany.
Vamos a verlo en código :
@Entity public class Persona { @Id private String nombre; private int edad; @OneToMany(mappedBy="persona" ) private List<Factura> listaFacturas; public Persona() { super(); listaFacturas=new ArrayList<Factura>(); } public List<Factura> getListaFacturas() { return listaFacturas; } public void addFactura(Factura f) { listaFacturas.add(f); } public void setListaFacturas(List<Factura> listaFacturas) { this.listaFacturas = listaFacturas; } public Persona(String nombre, int edad) { super(); this.nombre = nombre; this.edad = edad; listaFacturas=new ArrayList(); } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; }
Todo parece bastante sencillo . Ahora bien tenemos un problema con la anotación @ OneToMany y es que tiene un parámetro que se denomina mappedBy y cuyo valor es “persona”. Este parámetro hace referencia a que la relación ya fue construida por la otra clase “Factura” a traves de su variable “persona” . Esto normalmente genera dudas a la hora de crear las relaciones. La siguiente imagen intenta clarificar el concepto.
Entendido este concepto hemos terminado de construir una relación bidireccional entre ambas clases.
Gracias 🙂
de nada 🙂
me sirvo de ayuda, gracias amigo
de nada 🙂
Se pueden tener estas relaciones con MongoDB?… Como sería el Mappeo?
no lo he probado , pero supongo que si
Muy grande! Es de agradecer toda la línea de posts que te has currado sobre el mapeo con JPA!! Muchisimas gracias Cecilio!! 🙂
gracias
Buen post
gracias 🙂
Yo creo que es grande texto. Hasta luego.