Referenzielle Integrität-constraint-Verletzung auf join-Tabelle-Datensatz löschen

Habe ich eine viele-zu-viele-Beziehung zwischen Benutzern und Gruppen.

@Entity
class User {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = 'id.user')
    Set<GroupMembership> memberships
}

@Entity
class Group {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = 'id.group')
    Set<GroupMembership> members
}

@Entity
class GroupMembership {

    @Embeddable
    static class IdKey implements Serializable {

        @ManyToOne
        @JoinColumn(name = 'userId')
        User user

        @ManyToOne
        @JoinColumn(name = 'groupId')
        Group group
    }

    @EmbeddedId
    IdKey id = new IdKey()
}

Ich möchte in der Lage sein, so löschen Sie einen Benutzer oder eine Gruppe und alle damit verbundenen GroupMemberships entfernt werden. Jedoch, wenn ich versuche zu löschen Sie einen Benutzer oder eine Gruppe, bekomme ich ein:

org.h2.jdbc.JdbcSQLException: Referential integrity constraint violation: "FK_96K9TDEV9PO6Q3ISOYIJPWAQU: PUBLIC.GROUP_MEMBERSHIPS FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.GROUP(ID) (1)"; SQL statement:
delete from group where id=? [23503-186]

Ich bin mit Hibernate 4.3.8 und Spring Data JPA-1.7.2.

InformationsquelleAutor Jon Peterson | 2015-05-13
Schreibe einen Kommentar