3

私はこれらの問題をたくさん見つけましたが、何らかの理由でそれらは私のために機能しません。だから、私は明らかに何か間違ったことをしている。

フォームオブジェクト:

@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>

フォーム内にフォームフィールドオブジェクトを作成しても問題ありません。両方のオブジェクトが作成されます。フォームオブジェクトを削除すると、フォームフィールドオブジェクトはデータベースに残ります。

4

3 に答える 3

2

休止状態の孤立した削除の例

于 2012-11-07T09:59:36.807 に答える
0

エンティティFormFieldで確立された多対1の関係。結果として、フィールドに対する外部キー制約。エンティティを削除することはできません。制約には、休止状態で宣言する必要のある属性カスケードがあります。

@ManyToOne (cascade = {javax.persistence.CascadeType.ALL})
于 2012-11-07T10:17:33.903 に答える
0

私の悪い。

IDでフォームオブジェクトを削除しようとしました。これは機能しませんでした。

public void deleteForm(Form form) {

        Session session = HibernateUtil.getSession();
        session.delete(form);
        HibernateUtil.shutDown(session);
    }

クエリ後に受け取ったオブジェクトを削除すると、問題なく機能します。

于 2012-11-07T13:13:26.313 に答える