当前位置:编程学习 > JAVA >>

hibernate集合新增更新问题

hibernate user对象中有个roles集合属性,我在roles中新增一条对象,日志显示删除集合全部对象,再全部新增,而我只想不删除并且新增一条 hibernate --------------------编程问答-------------------- 数据库有3个表,acct_user,acct_user_role(中间表,外键在这声明),acct_role 
user实体中有 
//多对多定义 
@ManyToMany 
//中间表定义,表名采用默认命名规则 
@JoinTable(name = "ACCT_USER_ROLE", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") }) 
//Fecth策略定义 
@Fetch(FetchMode.SUBSELECT) 
//集合按id排序. 
@OrderBy("id") 
//集合中对象id的缓存. 
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 
@Cascade(value={CascadeType.MERGE}) 
public List<Role> getRoleList() { 
return roleList; 


现在我调用: 
User user = userDao.findByUsername(SpringSecurityUtils.getCurrentUserName()); 
List<Role> roles = user.getRoleList(); 
Role role1 = new Role(); 
role1.setName("管理员" + new Date()); 
roles.add(role1); 
user.setRoleList(roles); 
userDao.save(user); 

hibernate打印出来的语句是: 

Hibernate: 
    delete 
    from 
        acct_user_role 
    where 
        user_id=? 
Hibernate: 
    insert 
    into 
        acct_user_role 
        (user_id, role_id) 
    values 
        (?, ?) 
Hibernate: 
    insert 
    into 
        acct_user_role 
        (user_id, role_id) 
    values 
        (?, ?) 
Hibernate: 
    insert 
    into 
        acct_user_role 
        (user_id, role_id) 
    values 
        (?, ?) 
Hibernate: 
    insert 
    into 
        acct_user_role 
        (user_id, role_id) 
    values 
        (?, ?) 
Hibernate: 
    insert 
    into 
        acct_user_role 
        (user_id, role_id) 
    values 
        (?, ?) 

但是我想只插入一条,而不是全删除再全插入 --------------------编程问答-------------------- 为什么不是update --------------------编程问答--------------------
引用 2 楼 shxt_xiaozhi 的回复:
为什么不是update


只需要修改user对象,为什么调用save方法呢
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,