ON CASCADE DELETE no relacionamento muitos-para-muitos do JPA2

Eu li muitos tópicos sobre associações em cascata e muitos-para-muitos, mas não consegui encontrar uma resposta para minha pergunta em particular.

Eu tenho um relacionamento muitos-para-muitos entre UserProfiles e Roles. Quando eu removo um UserProfile, quero que os registros associados na tabela de junção (userprofile2role) sejam removidos pelo banco de dados, assim com uma ação SQL real 'ON DELETE CASCADE'. Isso é possível? Seja o que for que eu tente, o Hibernate sempre cria a tabela UserProfile sem especificar o comportamento ON DELETE.

Mapeamento do perfil do usuário:

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

Mapeamento de funções:

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

O SQL para a tabela de junção resultante desses mapeamentos não contém uma parte do ON CASCADE DELETE, infelizmente. Eu tentei definir o comportamento CascadeType.REMOVE na coleção de funções no UserProfile e na coleção userprofiles na função (mostrada aqui), mas sem sucesso. Suas sugestões são bem vindas :-)

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