@Entity
class Parent {
Long id;
}
@Entity
class Child {
@ManyToOne
Parent parent;
}
目标: 我需要从Child中删除一行而不尝试删除Parent。
观察:删除了Child行,但抛出了无法删除Parent的错误,因为其他行引用了它。
答案 0 :(得分:1)
您的代码应如下所示:
@Entity
class Parent {
Long id;
@OneToMany(mappedBy="parent",cascade=CascadeType.ALL,orphanRemoval=true)
Set<Child> children = new HashSet<>();
public void addChild( Child child )
{
children.add( child );
child.setParent( this );
}
public void removeChild( Child child )
{
children.remove( child );
child.setParent( null );
}
}
@Entity
class Child {
@ManyToOne(optional=false)
Parent parent;
//important! implement hashCode and equals
}
如果要删除Child,请在Parent上使用removeChild。 (另请注意,ManyToOne上的默认FetchType是EAGER。)