本帖最后由 chudu 于 2010-07-06 19:29:18 编辑

解决方案 »

  1.   

     userInfo.setUser(user);
     user.setUserInfo(userInfo);
    到底谁是谁的子属性啊?
      

  2.   

     <set name="userRoles" inverse="true" cascade="all" fetch="select">
                <key>
                    <column name="USER_ID" precision="10" scale="0" not-null="true" />
                </key>
                <one-to-many class="org.scbit.lsbi.biomedab.pojo.UserRole" />
            </set>
    级联操作的时候一定要保证inverse="false"
      

  3.   

    根据错误看好像你的序列有问题,还有一对一保存时只有一个表的主键自动生成,另外一个引用他的副本
     <set name="userRoles" inverse="true" cascade="all" fetch="select">
                <key>
                    <column name="USER_ID" precision="10" scale="0" not-null="true" />
                </key>
                <one-to-many class="org.scbit.lsbi.biomedab.pojo.UserRole" />
            </set>
    你的这个一对多好像也有问题,<column name="USER_ID" precision="10" scale="0" not-null="true" />这里的USER_ID应该写成ID吧
      

  4.   

    USER_ID应该写成ID?写成ID的话user表级联查询userRoles表是报:2010-07-07 12:18:03,703 [ERROR] - ORA-00904: "USERROLES1_"."ID": invalid identifier
      

  5.   

    我的表userRole中和user关联的字段数据库中是user_id
      

  6.   

    靠,我把两表拆开保存
    先保存user 在保存userInfo 也不行,debug一下,如下:user.setPassword(loginPwd);
    user.setCreatedDate(new Date());
    user.setStatus(UserStatusEnum.AVAILABLE.name());
    userManager.saveOrUpdate(user);
                    //上面的user保存成功,eclispe中debug看到成功后的user的id和数据库中实际保存的ID的值不一样,刚才保存后程序中打出来的id是787,而数据库中却是788.郁闷,每次测试时都不一样。不知什么原因导致。
    UserInfo userInfo = new UserInfo();
    userInfo.setLastLoginTime(new Date());
    userInfo.setLoginNum(0);
    userInfo.setPoint(0);
    userInfo.setId(user.getId());
    userInfo.setUser(user);
    user.setUserInfo(userInfo);
    userManager.saveOrUpdate(userInfo);