Я работаю над простой весенней демонстрацией безопасности и хочу поместить информацию о пользователе и роли в базу данных.Вот простая структура моей сущности.
@Entity
@Table(name = "users")
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private Long userId;
@OneToMany(mappedBy = "users", fetch = FetchType.LAZY, orphanRemoval=true, cascade = CascadeType.ALL)
private List<UserRoleMapping> userRoleMapping;
}
//
@Entity
@Table(name = "user_role_mapping")
public class UserRoleMapping {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_role_mapping_id")
private Long userRoleMappingId;
@ManyToOne(fetch = FetchType.LAZY)
private Users users;
@ManyToOne(fetch = FetchType.LAZY)
private UserRole userRole;
}
//
@Entity
@Table(name = "users_role")
public class UserRole {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "role_id")
private Long roleId;
@Column(name = "role")
private String role;
@Column(name = "role_desc")
private String roleDesc;
@OneToMany(mappedBy = "userRole", fetch = FetchType.LAZY, orphanRemoval=true)
private List<UserRoleMapping> userRoleMapping;
}
В моем случае я должен убедиться,когда пользователь создан, то я должен вставить подпоследовательность userRoleMapping.И если userRole удаляется, то userRoleMapping также должен быть удален.
Поэтому я помещаю CascadeType.ALL и orphanRemoval = true в сущности пользователей, а orphanRemoval = true в сущности userRole.
Однако, когда я запускаю userRoleRepository.delete (userRole).У меня есть dataIntegrityViolationException.
Я провел некоторые исследования и понял, что это своего рода ограничение jpa, чтобы убедиться, что мы также удаляем родителей (пользователей).
Могу ли я спросить, есть ли обходной путь для моегослучай использования?
Спасибо