我的 BlogUser 类中有这个
@ManyToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL) @JoinTable( name = "user_roles", joinColumns = @JoinColumn( name = "user_id", referencedColumnName = "id" ), inverseJoinColumns = @JoinColumn( name = "role_id", referencedColumnName = "id" ) ) private Set<Role> roles = new HashSet<>();
我的角色课上有这个
@ManyToMany(mappedBy = "roles",fetch = FetchType.LAZY) private Set<BlogUsers> blogUsers = new HashSet<>();
然后我尝试使用此服务删除
@Transactional @Override public void deleteUser(Long userId){ Optional<BlogUsers> optionalBlogUsers = blogUsersRepository.findById(userId); if(optionalBlogUsers.isEmpty()){ throw new ResourceNotFoundException("User with Id ("+userId+"), Does not Exist "); } if(optionalBlogUsers.get().getRoles().size() > 2){ throw new UnAuthorizedException("Not Authorized to Delete this User with id ("+userId+")"); } blogUsersRepository.deleteById(userId); }
我得到了这个错误
2023-04-22T08:30:16.316+01:00 WARN 7381 --- [io-8080-exec-10] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1451, SQLState: 23000 2023-04-22T08:30:16.316+01:00 ERROR 7381 --- [io-8080-exec-10] o.h.engine.jdbc.spi.SqlExceptionHelper : Cannot delete or update a parent row: a foreign key constraint fails (
博客.
user_roles, CONSTRAINT
FKh8ciramu9cc9q3qcqiv4ue8a6 FOREIGN KEY (
role_id) REFERENCES
roles (
id`))
2023-04-22T08:30:16.330+01:00 错误 7381 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet]:Servlet.service() for servlet [dispatcherServlet]在路径 [] 的上下文中抛出异常 [请求处理失败:org.springframework.dao.DataIntegrityViolationException:无法执行语句; SQL [不适用];具有根本原因的约束 [null]]
java.sql.SQLIntegrityConstraintViolationException: 无法删除或更新父行:外键约束失败 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118) ~[mysql-connector-j-8.0.33.jar:8.0.33]`