Java 休眠自动删除@manytone和@OneToManyAssociation中的第一个子项

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

我们将springboot2与hibernate 5.2.17结合使用。 我们与@manytone和@OneToMany有着奇怪的冬眠行为

伪码

 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=?