Question:
@ManyToMany:How to avoid the extra update in table B when inserting in table A,Join Tablei have two tables:
Authority ,
Permission they have
many to many relationship
Code:
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);
}
some times i need to create a new Authority and assign to it some existing permissions (insert data in authority , authority_permission only) as follows:
Code:
List<Permission> permissions=new ArrayList<Permission>;
Permission permission=permissionDao.getPermissionById(1);
permissions.add(permission);
authority.setPermissions(permissions);
sessionFactory.getCurrentSession().save(authority);
above code, works fine, but i noticed that hibernate makes an extra update in permission table, which is not needed, since there are no changes in permission table:
Code:
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 (?, ?)
any ideas how to avoid this extra update ?