Java 休眠自动删除@manytone和@OneToManyAssociation中的第一个子项
我们将springboot2与hibernate 5.2.17结合使用。 我们与@manytone和@OneToMany有着奇怪的冬眠行为 伪码Java 休眠自动删除@manytone和@OneToManyAssociation中的第一个子项,java,hibernate,transactional,Java,Hibernate,Transactional,我们将springboot2与hibernate 5.2.17结合使用。 我们与@manytone和@OneToMany有着奇怪的冬眠行为 伪码 public class OwningSide { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "owningSide") @MapKey(name = "keyColumn") @SortNatural private Sor
public class OwningSide {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "owningSide")
@MapKey(name = "keyColumn")
@SortNatural
private SortedMap<Long, NonOwningSide> nonOwningSideMap= new TreeMap<>(naturalOrder());
}
public class NonOwningSide {
@ManyToOne(cascade = CascadeType.ALL, targetEntity = OwningSide.class)
@JoinColumn(name = "owningSide_id")
private OwningSide owningSide;
}
public class Service{
@Transactional
public void removeByKey(OwnerSide ownerSide)
{
SortedMap<Long, NonOwningSide> nonOwningSideMap=ownerSide.getNonOwningSideMap();
nonOwningSideMap.remove(3);
}
}
它将删除我要删除的行和地图中的第一行。总是第一排
如果我从@manytone中删除Cascade.ALL,则问题正在解决。
但是,我不明白,为什么hibernate用Cascade.ALL删除第一行
Hibernate: delete from schema.NonOwnerTable where id=? and version=?
Hibernate: delete from schema.NonOwnerTable where id=? and version=?