0

これが私のセットアップです:

public class Record {
    //Stuff
}

public class RecordNotification {
    @ What Comes Here?
    private Record record;
}

クラス Record のオブジェクトを削除すると、このレコードを含むクラス RecordNotification のオブジェクトも削除されます。多くても同じレコードを含むタイプ RecordNotification のオブジェクトは常に 1 つです。Record は RecordNotification を認識していません。RecordNotification が削除された場合、他に何も起こりません。

4

1 に答える 1

3

関連する RecordNotification を指すプロパティを Record に追加する必要があります。次に、カスケード削除としてマークできます。このような:

@Entity
public class Record {
    @Id
    private int id;
    @OneToOne(mappedBy="record", cascade={CascadeType.REMOVE})
    private RecordNotification notification;

    public Record(int id) {
        this.id = id;
    }

    protected Record() {}
}

@Entity
public class RecordNotification {
    @Id
    private int id;
    @OneToOne
    private Record record;

    public RecordNotification(int id, Record record) {
        this.id = id;
        this.record = record;
    }

    protected RecordNotification() {}
}

生成された DDL は次のとおりです。

create table Record (
    id integer not null,
    primary key (id)
);

create table RecordNotification (
    id integer not null,
    record_id integer,
    primary key (id)
);

alter table RecordNotification 
    add constraint FKE88313FC6EE389C1 
    foreign key (record_id) 
    references Record;

これが機能することを確認しました: と を作成しRecordRecordNotificationコミットしてから を削除し、 がRecordなくなることに注意してくださいRecordNotification

Hibernate 4.1.4.Final を使用しました。これでうまくいかない場合は、EclipseLink のバグまたは誤動作が疑われます。

于 2013-06-12T13:14:40.627 に答える