Repositorio de la entidad ManyToMany problema de eliminación.
Tengo dos modelos: Evento y UsuarioNotificación.
Un Evento puede tener muchos Usuarios y un Usuario puede tener muchos Eventos. Construyo 2 modelos.
Evento
public class Evento {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String nombre;
@ElementCollection
private List<Acción> acciones;
private String descripción;
@ManyToMany
private List<UsuarioNotificación> usuarioNotificación;
}
UsuarioNotificación
public class UsuarioNotificación {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String correo electrónico;
private String nombre;
}
Puedo crear eventos y usuarios. También puedo eliminar eventos, pero no puedo eliminar usuarios. Recibo el siguiente mensaje:
la actualización o eliminación en la tabla “notification_user” viola la restricción de clave externa “fkjuklqmawfcf1ein89djo7945t” en la tabla “event_notification_user”
Detalle: La clave (id) = (12) todavía está referenciada en la tabla “event_notification_user”.
No entiendo las anotaciones para establecer en los modelos.
¿Hay una forma sencilla de manejar las relaciones? No quiero que mi repositorio se bloqueé por cosas simples como eliminaciones. Esa es la razón por la que uso JPARepository.
Gracias por su tiempo.
davy.ai
Basándose en la información proporcionada, parece que está intentando eliminar un usuario del modelo
NotificationUser
, pero la operación de eliminación está siendo bloqueada debido a una restricción de clave externa. Esto es probablemente porque el usuario está asociado con uno o más eventos en el modeloEvent
.Para manejar esto, deberá actualizar las anotaciones en sus modelos para asegurarse de que se respete la restricción de clave externa. Específicamente, deberá agregar la anotación
@ManyToMany
al modeloEvent
, y la anotación@JoinTable
al modeloNotificationUser
. Esto asegurará que se respete la restricción de clave externa al eliminar un usuario.Por ejemplo:
Event
NotificationUser
Al agregar las anotaciones
@ManyToMany
y@JoinTable
, asegurará que se respete la restricción de clave externa al eliminar un usuario.