Java Hibernate删除一条记录,但该记录不';你不走吗?

Java Hibernate删除一条记录,但该记录不';你不走吗?,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,编辑:哎呀,我想如果我发布删除代码会有帮助。对不起 // delete from permanent store and local list int index = get_record_to_delete(); if (entityList.getEntities().get(index).getEntityId() != null ) { // existing persisted record entityService.delet

编辑:哎呀,我想如果我发布删除代码会有帮助。对不起

    // delete from permanent store and local list
    int index = get_record_to_delete();
    if (entityList.getEntities().get(index).getEntityId() != null ) {
        // existing persisted record
        entityService.delete(entityInfo.getEntities().get(index).getEntityId());
    }
    //remove from local list
    entityList.getEntities().remove(index);
    return ownersInfo;



    // entityService called by above code
    public void delete(MyEntity entity)  {
        repository.delete(entity);  // subclass of org.springframework.data.jpa.repository.JpaRepository
    }
我使用的是SpringData/JPAV1.4.2.RELEASE和Hibernate3.6.10.Final

我有一种情况,我正在删除一个实体,删除似乎起作用,但当我刷新我的网页时,该实体重新出现。因此,它不会产生错误,但不会删除记录

此实体中包含子实体。我怀疑某种实体依赖性问题会阻止实体被真正“删除”,但我不知道它可能是哪个实体依赖性,Hibernate也没有告诉我。所包含的实体是否被删除并不重要,但该实体需要被删除。不知道为什么没有发生。以下是我试图删除的实体:

public class MyEntity implements java.io.Serializable {
    @Id
    @GeneratedValue
    @Column(name = "MYID", unique = true, nullable = false)
    private Long myId;

    @Column(name = "MY_NAME", nullable = false, length = 50)
    private String myName;

    @ManyToOne
    @JoinColumn(name = "ADDRESS_ID", nullable = false)
    private AddressEntity myAddress;

    @ManyToOne
    @JoinColumn(name = "OTHER_ADDRESS_ID", nullable = true)
    private AddressEntity myOtherAddress;

    @ManyToOne
    @JoinColumn(name = "TYPE_CODE", nullable = false)
    private MyType myType;

    @ManyToOne
    @JoinColumn(name = "ADDRESS_CODE", nullable = false)
    private AddressCode addressCode;

    @Column(name = "OTHER", nullable = false, precision = 3, scale = 0)
    private Integer myOther;

    @ManyToOne
    @JoinColumn(name = "PARENT_ID", nullable = false)
    private MyParent parent;

    @Column(name = "PHONE", nullable = false, precision = 10, scale = 0)
    private Long myPhone;

    @Column(name = "SOCIAL", nullable = false, length = 9)
    private String mySocial;
}

有人看到任何可能暗示此实体为何不删除的信息吗?

这是Hibernate@OneToMany注释取消删除的情况

因为父对象上有一个
@OneToMany(cascade=CascadeType.ALL)
注释,如下所示:

Class MyParent {

    @OneToMany(cascade=CascadeType.ALL)
    Set<MyObject> myObjects;

}

这些神奇的词语让你知道Hibernate正在取消你的删除。这并没有很好的文档记录,所以我希望这对其他人有所帮助

在映射类中使用此级联类型。它将从数据库中删除记录

@OneToMany(cascade=CascadeType.ALL) 

您如何尝试删除实体?请发布代码的删除部分。请告诉我们您实际执行删除的位置。最常见的问题是您没有提交删除,但在您发布代码之前,我们无法确定。这似乎确实是问题所在。使用
flush()
确保删除已提交。@程序员丹:flush()和commit()是完全不同的事情。默认情况下,提交()总是在提交之前调用flush()。您要做的是指定
孤立删除=true
,如果您从
myObjects
中删除子对象,它将在保存父对象时自动删除。这对我很有效,我将@OneToMany(mappedBy=“parent”,cascade=CascadeType.ALL)更改为@OneToMany(mappedBy=“parent”,orphanRemoving=true)
@OneToMany(cascade=CascadeType.ALL)