解决方案 »

  1.   

    表是否有主外键约束;你把Hibernate配置内容列出来瞧一瞧哈。
      

  2.   

    级联是不是配置了all或merge、remove?
    贴出hibernate配置看看
      

  3.   

    user配置group配置hibernate自动生成了中间表,userid和groupid作为联合主键,groupid外键,这样对吗??
      

  4.   

    Set<Group> groups = new HashSet<>();
     Gropu group3 = groupService.get(3);
     Gropu group2 = groupService.get(2);
      groups.add(group3);
      groups.add(group2);

     
    user.setGroups(groups)  ;
     userService.update(user);你设置的就一个关系,数据库肯定就一个值!
    一般来说:你先查询出之前的groups,再把新想要添加的group放进去,然后更新操作。
      

  5.   


    每次一次操作都要先把原来的set查出来,然后再add进去吗?
    这样会不会效率很低,不能直接只插入吗?
    而且执行update(user)的时候,hibernate会先去更新一次user里面的字段(update user set xxx=xxx,...)
    但是user值并没有改变啊,请问还有其他的方法来更新user和group的关联吗?
      

  6.   


    每次一次操作都要先把原来的set查出来,然后再add进去吗?
    这样会不会效率很低,不能直接只插入吗?
    而且执行update(user)的时候,hibernate会先去更新一次user里面的字段(update user set xxx=xxx,...)
    但是user值并没有改变啊,请问还有其他的方法来更新user和group的关联吗?
    第一个问题回答:如果你设置了级联关系,user对象已经包含了group的set,新添加add,只需要user.getGroups.add(新的);
    如果你不查出来,程序如何知道,你不是想要删除旧的记录,而是想要新添加呢??
    第二个问题:性能方面,如果关联表设置的当,原有记录存在,只会添加新的,不会删除旧的;不存在你说的性能问题!第三点:优化方面 我是有一些方法,但是 很久没留意了  怕印象有误。  所以我想说的是,Hibernate本身就是面向对象的ORM,如想精准控制,就用JDBC吧,Hibernate不是不能,可以通过配置文件配置,但有些复杂,得不偿失;没有必要为这点性能顾虑太多,若是真要求高性能,Hibernate肯定不会用的 
      

  7.   

    我个人很喜欢Hibernate的实现理论,但是很讨厌在开发中用Hibernate,推荐MyBatis
      

  8.   


    每次一次操作都要先把原来的set查出来,然后再add进去吗?
    这样会不会效率很低,不能直接只插入吗?
    而且执行update(user)的时候,hibernate会先去更新一次user里面的字段(update user set xxx=xxx,...)
    但是user值并没有改变啊,请问还有其他的方法来更新user和group的关联吗?
    第一个问题回答:如果你设置了级联关系,user对象已经包含了group的set,新添加add,只需要user.getGroups.add(新的);
    如果你不查出来,程序如何知道,你不是想要删除旧的记录,而是想要新添加呢??
    第二个问题:性能方面,如果关联表设置的当,原有记录存在,只会添加新的,不会删除旧的;不存在你说的性能问题!第三点:优化方面 我是有一些方法,但是 很久没留意了  怕印象有误。  所以我想说的是,Hibernate本身就是面向对象的ORM,如想精准控制,就用JDBC吧,Hibernate不是不能,可以通过配置文件配置,但有些复杂,得不偿失;没有必要为这点性能顾虑太多,若是真要求高性能,Hibernate肯定不会用的 
    谢谢,已经搞定它现在直接插入了
    但是有没有办法不去执行上边那条upadte直接执行insert啊