id为主键并且还是自动增长得;我用的是mysql数据库  User user = this.userService.getUser(id); 
UserHonest honest = new UserHonest(); 
honest.setId(5); 
honest.setHonest(5); 
honest.setType("REG"); 
honest.setUser(user); 
this.userHonestService.addUserHonest(honest); 为什么我每次都要还手动设置主键的值  否则就要抱错误 “ids for this class must be manually assigned before calling save” 
我不明白是为什么? 请指教

解决方案 »

  1.   

    你的表结构是什么?2. 你的源代码, 这只是你的原代码片断,
    this.userHonestService.addUserHonest(honest); 是什么?[align=center]====  ====
    [/align]
      

  2.   


    我的表结构是:
       CREATE TABLE `userhonest` (
      `id` bigint(20) NOT NULL auto_increment,
      `honest` int(11) default NULL,
      `type` varchar(25) default NULL,
      `user_id` bigint(20) default NULL,
      PRIMARY KEY  (`id`),
      KEY `user_id` (`user_id`),
      CONSTRAINT `userhonest_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `userinfo` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2654209 DEFAULT CHARSET=utf8;this.userHonestService.addUserHonest(honest);就是将这个对象持久化到数据库中
      

  3.   

     this.userHonestService.addUserHonest(honest);需要看你这段的代码[align=center]====  ====
    [/align]
      

  4.   


    public Long addUserHonest(UserHonest instance)
     {
    this.userHonestDao.save(instance);
    if(instance != null && instance.getId() != null)
    {
        return instance.getId();
    }
    return null;
    }
      

  5.   

    哥们,你能不能一次贴到底阿this.userHonestDao.save(instance);userHonestDao是什么?[align=center]====  ====
    [/align]
      

  6.   


    userHonestDao它继承了一个泛型的GenericDAO  我觉得问题不应该做在哪里,其他地方调用都怪好的
      

  7.   

    我觉得是那个自动增长主键的原因  我对mysql了解不是很多,以前用sqlserver的时候,都不用set主键  
      

  8.   

     看不到你的环境,建议你检查1. 看看最后的SQL语句
    2. 看看你的驱动[align=center]====  ====
    [/align]