@ManyToMany: как избежать дополнительного обновления в таблице B при вставке в таблицу A, присоединиться к таблице - PullRequest
0 голосов
/ 25 октября 2011

У меня есть две таблицы:

Полномочия , Разрешение у них много ко многим отношение

class Authority{

@ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "authority_permission", joinColumns = { @JoinColumn(name = "authority_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "permission_id", nullable = false, updatable = false) })
    private List<Permission> permissions = new ArrayList<Permission>(0);

}

иногда мне нужно создать новый орган и назначить ему некоторые существующие разрешения ( вставить данные в орган , орган_перенос только) следующим образом:

List<Permission> permissions=new ArrayList<Permission>;
Permission permission=permissionDao.getPermissionById(1); 
permissions.add(permission);   
authority.setPermissions(permissions)
sessionFactory.getCurrentSession().save(authority).

код выше, работает нормально, но я заметил, что hibernate делает дополнительное обновление в разрешение таблица, котораяне требуется, поскольку в таблице разрешений нет изменений:

Hibernate: insert into authority (description, display_name, is_default, name, authority_id) values (?, ?, ?, ?, ?)
Hibernate: update permission set description=?, display_name=?, name=? where permission_id=?
Hibernate: insert into role_permission (role_id, permission_id) values (?, ?)

есть идеи, как избежать этого дополнительного обновления?

1 Ответ

0 голосов
/ 25 октября 2011

Изменить аннотацию каскадного типа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...