我现在的员工表里面的主键是手动输入的,所以没有自动增长,请问下面的hibernate映射文件的代码还要不?
                   <id name="empId" type="java.lang.String">
<column name="emp_id" length="10" />
<generator class="identity" />
</id>  红色部分还要不?而且,我的这个主键因需要设置为String类型的,请问这会影响我调用hibernate的查询方法,传入一个ID主键查询吗?   我现在这样设置后,程序报错了,
  Provided id of the wrong type. Expected: class java.lang.String, got class java.lang.Integer   我不知道是我映射文件出问题了  还是我写的查询方法不行,大家帮忙解决哈,感谢了!!!

解决方案 »

  1.   

    <generator class="identity" />  导致 Provided id of the wrong type(String)
    去掉吧 
      

  2.   

    手动输入,就是使用<generator class="assigned" /> 啊
    还有
    <generator class="identity" /> 
    的只支持int ,short ,long的数据库类型
      

  3.   

    <generator class="assigned" />
      

  4.   

    其它配置都是正确的,只需要把
    <generator class="identity" /> 改成<generator class="assigned" />就可以啦。
      

  5.   

    主键要是设为identity的话,它必须是int类型的,不能是String等类型。再次注意你的数据库中的表的主键确实已经设为自增的
      

  6.   

    谢大家了,之前的启动错误我解决了,我现在调用hibernate的 get(employee.class,id)方法,本身ID是string 的,我转换为Int后传入查询,
    还是报之前的那个错,我传如参数是Serializable类型的,也查不出来,这是为什么啊 
      

  7.   

    get(employee.class,id)
    这里的id只接受数据对象,int是基本数据类型
    你改为
    get(employee.class,new Integer(id))即可
    老兄不厚道啊,一个贴问两个问题,还不结贴
      

  8.   

    将原来那去掉,改成 <generator class="assigned" />