Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法删除Hibernate中的孤立子级_Java_Hibernate_Cascade_Orphaned Objects - Fatal编程技术网

Java 无法删除Hibernate中的孤立子级

Java 无法删除Hibernate中的孤立子级,java,hibernate,cascade,orphaned-objects,Java,Hibernate,Cascade,Orphaned Objects,我发现了很多这样的问题,但出于某种原因,它们对我不起作用。所以,我显然做错了什么 表单对象: @Entity @Table(name = "WEBFORMS_WEBFORM") public class Form { @Id @GeneratedValue @Column(name = "FORM_ID") Long id; @Column(name = "NAME") String name; @OrderBy("priority"

我发现了很多这样的问题,但出于某种原因,它们对我不起作用。所以,我显然做错了什么

表单对象:

@Entity
@Table(name = "WEBFORMS_WEBFORM")
public class Form {

    @Id
    @GeneratedValue
    @Column(name = "FORM_ID")
    Long id;

    @Column(name = "NAME")
    String name;

    @OrderBy("priority")
    @OneToMany(mappedBy = "form", cascade={javax.persistence.CascadeType.ALL}, orphanRemoval = true)
    Set<FormField> formFields;

    @OrderBy("creationDate DESC")
    @OneToMany(mappedBy = "form", cascade={javax.persistence.CascadeType.ALL}, orphanRemoval = true)
    Set<FormResult> formResults;

    @Column(name = "ALLOW_GUESTS")
    Boolean allowGuest;

    @Column(name = "SEND_MAIL")
    Boolean sendMail;
@Entity
@Table(name = "WEBFORMS_FORM_FIELD")
public class FormField {

    @Id
    @GeneratedValue
    @Column(name = "FORM_FIELD_ID")
    Long id;

    @Column(name = "TYPE")
    String type;

    @Column(name = "CONTENT")
    String content;

    @Column(name = "PRIORITY")
    Long priority;

    @ManyToOne()
    @JoinColumn(name = "FORM_ID")
    public Form form;
<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-annotations</artifactId>
   <version>3.5.6-Final</version>
</dependency>
我正在使用hibernate注释:

@Entity
@Table(name = "WEBFORMS_WEBFORM")
public class Form {

    @Id
    @GeneratedValue
    @Column(name = "FORM_ID")
    Long id;

    @Column(name = "NAME")
    String name;

    @OrderBy("priority")
    @OneToMany(mappedBy = "form", cascade={javax.persistence.CascadeType.ALL}, orphanRemoval = true)
    Set<FormField> formFields;

    @OrderBy("creationDate DESC")
    @OneToMany(mappedBy = "form", cascade={javax.persistence.CascadeType.ALL}, orphanRemoval = true)
    Set<FormResult> formResults;

    @Column(name = "ALLOW_GUESTS")
    Boolean allowGuest;

    @Column(name = "SEND_MAIL")
    Boolean sendMail;
@Entity
@Table(name = "WEBFORMS_FORM_FIELD")
public class FormField {

    @Id
    @GeneratedValue
    @Column(name = "FORM_FIELD_ID")
    Long id;

    @Column(name = "TYPE")
    String type;

    @Column(name = "CONTENT")
    String content;

    @Column(name = "PRIORITY")
    Long priority;

    @ManyToOne()
    @JoinColumn(name = "FORM_ID")
    public Form form;
<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-annotations</artifactId>
   <version>3.5.6-Final</version>
</dependency>

org.hibernate
休眠注释
3.5.6-最终版本

如果我在表单中创建一个表单字段对象,那么就没有问题了。这两个对象都已创建。删除表单对象时,表单字段对象保留在数据库中。

在实体表单字段上建立的多对一关系。因此,字段上会出现外键约束。它不允许删除实体。约束具有必须在hibernate中声明的属性级联

@ManyToOne (cascade = {javax.persistence.CascadeType.ALL})
我的错

我试图按ID删除表单对象。这不起作用

public void deleteForm(Form form) {

        Session session = HibernateUtil.getSession();
        session.delete(form);
        HibernateUtil.shutDown(session);
    }
删除查询后收到的对象效果很好