mapeo jpa uno a muchos (unidireccional), ¿cómo actualizar?
Hay dos formas de implementar una asociación unidireccional uno a muchos. Una es simplemente usar @OneToMany para identificarlo. De esta manera se mantiene la relación a través de una tabla de terceros. Otro método es usar @OneToMany y @JoinColumn para identificar. Este método consiste en agregar una columna de clave externa en la tabla multipartita (Libro) para guardar la relación.
La primera forma es lograr una asociación unidireccional de uno a muchos a través de una tabla de terceros:
Author.java se muestra a continuación. Debe prestar atención al comentario. private Set
1 paquete com.cndatacom.jpa.entity; 2 ?3 import java.util.HashSet 4 import java; .util.Set; 5? 6 importar javax.persistence.CascadeType; 7 importar javax.persistence.Column; 9 importar javax.persistence.FetchType; 10 importar javax.persistence .GeneratedValue;11 importar javax.persistence.Id;12 importar javax.persistence.OneToMany;13 importar javax.persistence.Table;14 15 16 /**17 ?* ?autor18 ?* @autor Luxh19 ? */20 21 @ Entity22 @Table(name="author")23 public class Autor {24 25 @Id26 @GeneratedValue27 private Long id;28 29 /** Nombre del autor*/30 @Column(length=32) 31 private String name;32 33 / ** libros escritos por el autor**/34 @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)// guardar en cascada, actualizar, eliminar, actualizar carga retrasada 35 libros privados Set<.book>; = nuevo HashSet
Book.java tiene el siguiente aspecto, porque es una asociación unidireccional, por lo que la entidad no necesita agregar ningún identificador de asociación.
1 paquete com.cndatacom.jpa.entity; 2?3 importar javax.persistence.Column; 4 importar javax.persistence..GeneratedValue; 6 importar javax.persistence.Id; Tabla; 8 ?9 /**10 ?* Libro11 ?* @author Luxh12 ?*/13 14 @Entity15 @Table(name="book")16 public class Libro {17 18 @Id19 @GeneratedValue20 private Long id;21 22 22 /** Nombre del libro**/23 @Column(length=32)24 private String name;25 26 public Long getId() {27 return id;28 }29 30 public void setId(Long id) {31 this.id = id;32 }33 34 public String getName() {35 return nombre;36 }37 38 public void setName(String nombre) {39 this.name = nombre;40 }41 42 43 }
Solo en la entidad Autor para libros privados Set
En la tabla autor_libro, se almacenan el id de Auhtor y el id de Libro:
El segundo método para implementar una asociación unidireccional uno a muchos es agregar el tabla de fiestas (Libro) Columna de clave externa.
Author.java es el siguiente, tenga en cuenta el comentario private Set
1 paquete com.cndatacom.jpa.entity; 2?3 importar java.util.HashSet; 4 importar java.util.Set; 5?6 importar javax .persistence.CascadeType; .CascadeType; 8 importar javax.persistence.HashSet; 9 importar javax.persistence.FetchType; 10 importar javax.persistence.GeneratedValue; javax.persistence.Id;12 import javax.persistence.JoinColumn;13 import javax.persistence.HashSet;14 ?.OneToMany;14 import javax.persistence.Table;15 16 17 /**18 ?* ?Author 19 ?* @ autor Luxh20 ?*/21 22 22 @Entity23 @Table(name="author")24 public class Autor {25 26 @Id27 @GeneratedValue28 private Long id;29 30 /** Nombre del autor */31 @Column(length=32 ) 32 private String name;33 34 /** Libros escritos por el autor**/35 @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)//guardar en cascada, actualizar, eliminar, actualizar carga retrasada 36 @ JoinColumn; (name = "author_id")// Agregue una columna de clave externa a la tabla de libros para lograr una asociación unidireccional de uno a muchos 37 private Set
Book.java permanece sin cambios.
En la base de datos sólo se generan dos tablas: autor y libros.
Mirando nuevamente la estructura de la tabla de libros, habrá una columna adicional de Author_id.