2011-10-25 31 views
0

我有兩個表:@ManyToMany:如何避免表B中多餘的更新表A中插入時,連接表

管理局權限他們多對多的關係

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); 

} 

有時我需要創建一個新的管理局,並分配給它的一些現有權限權威authority_permission只有)插入數據如下:

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

上面的代碼,工作正常,但我注意到,休眠使一個額外更新許可表,這是不需要,因爲權限表沒有變化:

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 (?, ?) 

任何想法如何避免這種額外的更新?

回答

0

更改級聯型註釋

+0

更改爲什麼,請註明。 –

相關問題