Как удалить все ассоциации в Быть в спящем режиме JoinTable сразу?

У нас есть следующие два объекта с many-many ассоциацией:

@Entity
public class Role {
  ...
  @ManyToMany
  @JoinTable( name = "user_has_role", joinColumns = { @JoinColumn( name = "role_fk" ) }, inverseJoinColumns = { @JoinColumn( name = "user_fk" ) } )
  private Set           userCollection; 
  ...
}

и

@Entity
public class User {
  ...
  //bi-directional many-to-many association to Role
  @ManyToMany( mappedBy = "userCollection" )
  private Set        roleCollection;
  ...
}

Если мы хотим усечь все данные с

em.createQuery( "DELETE Role" ).executeUpdate();

мы должны очистить все ассоциации в "user_has_role" JoinTable как показанный в этом ответе:

for ( ... )
{
    A a = aDao.getObject(aId);
    B b = bDao.getObject(bId);

    b.getAs().remove(a);
    a.getBs().remove(b);
    bDao.saveObject(b); 
}

Существует ли способ сделать, удаляют все ассоциации в JoinTable сразу, не выполняя итерации по всем данным? Возможно, существует специальная HQL-команда как DELETE Role.user_has_role ?

5
задан Community 23 May 2017 в 10:26
поделиться