Looking for jpa Keywords? Try Ask4Keywords

jpaMuchos a muchos mapeos


Introducción

Un mapeo ManyToMany describe una relación entre entidades donde ambas pueden estar relacionadas con más de una instancia de la otra y se define mediante la anotación @ManyToMany .

A diferencia de @OneToMany donde se puede @OneToMany una columna de clave externa en la tabla de la entidad, ManyToMany requiere una tabla de unión, que asigna las entidades entre sí.

Parámetros

Anotación Propósito
@TableGenerator Define un generador de clave principal al que se puede hacer referencia por nombre cuando se especifica un elemento generador para la anotación GeneratedValue
@GeneratedValue Proporciona la especificación de estrategias de generación para los valores de las claves primarias. Puede aplicarse a una propiedad o campo de clave principal de una entidad o una superclase asignada junto con la anotación de Id.
@ManyToMany Especifica la relación entre el empleado y las entidades del proyecto, de modo que muchos empleados puedan trabajar en múltiples proyectos.
mappedBy="projects" Define una relación bidireccional entre empleado y proyecto.
@JoinColumn Especifica el nombre de la columna que se referirá a la Entidad para ser considerado como propietario de la asociación
@JoinTable Especifica la tabla en la base de datos que mantendrá a los empleados para proyectar relaciones usando claves externas

Observaciones

  • @TableGenerator y @GeneratedValue se utilizan para la creación automática de ID utilizando el generador de tablas jpa.
  • La anotación @ManyToMany especifica la relación entre las entidades Empleado y Proyecto.
  • @JoinTable especifica el nombre de la tabla para usar como unir la tabla jpa muchos a muchos mapeo entre el empleado y el proyecto usando name = "employee_project". Esto se hace porque no hay manera de determinar la propiedad de un jpa muchos a muchos mapeos, ya que las tablas de la base de datos no contienen claves externas para hacer referencia a otra tabla.
  • @JoinColumn especifica el nombre de la columna que se referirá a la Entidad para que se considere como propietario de la asociación, mientras que @inverseJoinColumn especifica el nombre del lado inverso de la relación. (Puedes elegir cualquier lado para ser considerado como propietario. Solo asegúrate de que esos lados en la relación). En nuestro caso, hemos elegido Empleado como propietario, por lo que @JoinColumn se refiere a la columna idemployee en join table employee_project y @InverseJoinColumn se refiere a idproject que es el lado inverso de jpa muchos a muchos mapeos.
  • La anotación @ManyToMany en la entidad del proyecto muestra una relación inversa, por lo tanto, utiliza los proyectos mappedBy = para referirse al campo en la entidad del empleado.

El ejemplo completo puede ser referido aquí

Muchos a muchos mapeos Ejemplos relacionados