W SPRAWIE USUWANIA KASKADY w związku JPA2 wiele do wielu

Przeczytałem wiele tematów dotyczących powiązań kaskadowych i wielu do wielu, ale nie byłem w stanie znaleźć odpowiedzi na moje konkretne pytanie.

Mam relację wiele-do-wielu między UserProfiles a Roles. Gdy usuwam profil użytkownika, chcę, aby powiązane rekordy w tabeli łączenia (userprofile2role) zostały usunięte przez bazę danych, a więc z rzeczywistą akcją SQL „ON DELETE CASCADE”. czy to możliwe? Niezależnie od tego, co próbuję, Hibernate zawsze tworzy tabelę UserProfile bez określania zachowania ON DELETE.

Mapowanie UserProfile:

@Entity
public class UserProfile {

    private Long id;
    private Set<Role> roles;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public final Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    // Note: CascadeType.ALL doesn't work for many-to-many relationships
    @ManyToMany (fetch = FetchType.EAGER)
    public Set<Role> getRoles() {
        return roles;
    }

    public void setRoles(Set<Role> roles) {
        this.roles = roles;
    }
}

Mapowanie ról:

@Entity
public class Role {

    private Long id;
    private Set<UserProfile> userProfiles = new HashSet<UserProfile>();

    @Id
    @GeneratedValue
    public final Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    // CascadeType.REMOVE doesn't create ON CASCADE DELETE in SQL?
    @ManyToMany(mappedBy = "roles", cascade = CascadeType.REMOVE)
    public Set<UserProfile> getUserProfiles() {
        return userProfiles;
    }

    public void setUserProfiles(Set<UserProfile> userProfiles) {
        this.userProfiles = userProfiles;
    }
}

SQL dla tabeli łączenia wynikającej z tych odwzorowań nie zawiera niestety części USUWANIE KASKADY. Próbowałem ustawić zachowanie CascadeType.REMOVE zarówno w kolekcji ról w UserProfile, jak iw kolekcji userprofiles w Role (tutaj), ale bezskutecznie. Twoje sugestie są mile widziane :-)

CREATE TABLE `px_userprofile2role` (
  `userprofile_id` BIGINT(20) NOT NULL,
  `role_id` BIGINT(20) NOT NULL,
  PRIMARY KEY (`userprofile_id`,`role_id`),
  KEY `FK1C82E84191F65C2B` (`userprofile_id`),
  KEY `FK1C82E8416203D3C9` (`role_id`),
  CONSTRAINT `FK1C82E8416203D3C9` FOREIGN KEY (`role_id`) REFERENCES `px_role` (`id`),
  CONSTRAINT `FK1C82E84191F65C2B` FOREIGN KEY (`userprofile_id`) REFERENCES     `px_userprofile` (`id`)
) ENGINE=INNODB DEFAULT CHARSET=latin1

questionAnswers(1)

yourAnswerToTheQuestion