【发布时间】:2017-06-20 23:56:40
【问题描述】:
当我尝试在 Hibernate 的帮助下使用其 ID 从角色表中删除角色时,会发生异常:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`ewp`.`permissions`, CONSTRAINT `FK_sq51ihfrapwdr98uufenhcocg` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`))
Class User
...
@NotNull
@ManyToMany(fetch = FetchType.EAGER, targetEntity = Role.class)
@JoinTable(name = "permissions",
joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "role_id")})
private Set<Role> roles;
...
Class Role
...
@ManyToMany(fetch = FetchType.EAGER)
private List<User> users;
...
当我添加到角色时
@JoinTable(name = "permissions",
joinColumns = {@JoinColumn(name = "role_id")},
inverseJoinColumns = {@JoinColumn(name = "user_id")})
private List<User> users;
无一例外地删除角色。 但我认为它可以在没有映射角色的情况下工作。
【问题讨论】:
-
您是否尝试过在自有端添加 mappedBy? @ManyToMany(fetch = FetchType.EAGER, mappedBy="roles")
标签: java hibernate foreign-keys mapping many-to-many