Java hibernate-多对多关系中的级联删除
我有一个SpringMVC应用程序,它使用hibernate处理mysql数据库。我有Java hibernate-多对多关系中的级联删除,java,hibernate,orm,many-to-many,Java,Hibernate,Orm,Many To Many,我有一个SpringMVC应用程序,它使用hibernate处理mysql数据库。我有acl和acl\u组表格。这两个表与联接表有Many-to-Many关系。以下是实体类的结构: Acl: public class Acl implements Serializable{ ... @ManyToMany(mappedBy = "aclCollection",fetch = FetchType.LAZY) private Collection<AclGroup> a
acl
和acl\u组
表格。这两个表与联接表有Many-to-Many
关系。以下是实体类的结构:
Acl:
public class Acl implements Serializable{
...
@ManyToMany(mappedBy = "aclCollection",fetch = FetchType.LAZY)
private Collection<AclGroup> aclGroupCollection;
//Setter and getter
}
您告诉Hibernate,AclGroup上的所有操作都必须级联到其ACL集合。因此,当您删除AclGroup时,Hibernate也会删除其所有ACL。由于这是一个多对多关联,正在删除的ACL被其他ACL组引用,因此会导致约束冲突 删除组时删除组的所有acl是没有意义的,因为其他组也包含并且必须继续包含acl
删除
cascade=CascadeType.ALL
,一切正常。另一个问题完全不同。请提出另一个详细的问题,显示相关的Spring方法和完整的堆栈跟踪。
public class AclGroup implements Serializable{
...
@JoinTable(name = "acl_group_acl", joinColumns = {
@JoinColumn(name = "acl_group_id", referencedColumnName = "id")}, inverseJoinColumns = {
@JoinColumn(name = "acl_id", referencedColumnName = "id")})
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Collection<Acl> aclCollection;
//Setter and getter
}
org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer