Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate值未从数据库中删除_Java_Hibernate_Spring Mvc - Fatal编程技术网

Java Hibernate值未从数据库中删除

Java Hibernate值未从数据库中删除,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,它表示大小为零,但当我在EUser\u UserRole表中查看db时,我看到值仍然存在。如何解决这个问题 同样在EUser_UserRole中,它说 EUser approveUser = (EUser) userService.getOne(2); approveUser.getRoles().clear(); userService.update(approveUser); System.out.println(approveUser.getRoles().size());

它表示大小为零,但当我在
EUser\u UserRole
表中查看db时,我看到值仍然存在。如何解决这个问题

同样在
EUser_UserRole
中,它说

EUser approveUser = (EUser) userService.getOne(2); 
 approveUser.getRoles().clear();   
 userService.update(approveUser);
 System.out.println(approveUser.getRoles().size());

如何手动删除添加编辑删除???

se
CascadeType

@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
私有列表角色;
更新:

属性可以使用
jpa2.x
version。您必须通过比较
旧角色列表
和新角色列表,找出已删除的
用户角色
数据`


孤立删除
属性不支持在
多个
映射中进行删除。

级联确实是一种让Hibernate进行删除的方法,如果我看到发布的代码,这很可能就是要求的。但由于问题是关于手动删除,而级联是更自动的删除,因此我必须添加以下建议:

  • 使用EntityManager.remove()
  • 调用JPQL删除查询

哪个更适合“手动”删除的描述。

不要对许多关系使用级联。这可能会导致在一个较宽的实体集群上进行不希望的涟漪删除,这比人们希望的要容易

如果要清除单个用户与其角色之间的关系(从联接表中删除行),则需要清除两侧的关系字段,这意味着清除
EUser
中的
UserRole
列表,并从相应
UserRole
实例的列表中删除当前的
EUser

编辑:

清除相关实体列表时,您不会从数据库中删除任何实体。唯一的结果是联接表中的某些行将被删除,并且在下一次获取/刷新之后,
EUser
UserRole
实例将不再相关


如果要删除UserRoles DB条目,可以在删除与的关系后执行此操作

我收到以下错误>>注释类型的属性OrphanRemoving未定义ManyToMany
OrphanRemoving
支持JPA 2.X verson。u无法使用较低版本的verison。如果userService.update()正在执行EntityManager.merge(),则JPA的任何版本都不支持在ManyToManyI上删除孤立项,这应该是不必要的。approveUser很可能是一个托管实体实例,如果您按照CycDemo的建议添加级联,那么对实体对象进行更改应该会“自动”触发持久性提供程序在适当的时候将更改持久化到数据库中。我不想删除该用户。仅应删除角色是否应从数据库或仅从关系中删除角色?我猜是第二个。请看编辑。
EUser approveUser = (EUser) userService.getOne(2); 
 approveUser.getRoles().clear();   
 userService.update(approveUser);
 System.out.println(approveUser.getRoles().size());
This table does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<UserRole> roles;