刚学习Hibernate做的一个例子,但总是提示:Provided id of the wrong type. Expected: class java.lang.String, got class java.lang.Integer。我百度过是说:【提供了错误的id类型,期待一个Integer类型,却得到一个String类型】不知道怎么解决哈。
代码如下:
【BaseDaoHbm类】/**
 * 得到一个对象,根据ID
 * @param clazz
 * @param id
 * @return
 */
public Object get(Class clazz, Serializable id) {
try {
Object item = getSession().get(clazz, id);
return item;
} catch (RuntimeException re) {
throw re;
}finally {
HibernateSessionFactory.closeSession();
}
}
【测试类】/**
 * @param args
 */
public static void main(String[] args) {
BaseDaoHbm bHbm = new BaseDaoHbm();
Member member = (Member) bHbm.get(Member.class, 1);
System.out.println(member.getUserId());
}

解决方案 »

  1.   

    get(Class clazz, Serializable id)   // Serializable .... 这个是integer ? 
      

  2.   

     Member member = (Member) bHbm.get(Member.class, 1);
    此处传的id类型必须和member中id的类型一致;看错误应该是你Member 中id定义成String;
    但是这里传的是1是基本类型,JDK自动包装成Integer类型的;改成"1"就好了 ;
    还有LZ说
    我百度过是说:【提供了错误的id类型,期待一个Integer类型,却得到一个String类型】
    其实正确地翻译应该是:【提供了错误的id类型,期待一个String类型,却得到一个Integer类型】
      

  3.   

    两个可能,一个是Member 对象的id是String类型,还有一个可能是映射文件配置成String了
      

  4.   

    hbm.xml 的id属性配置成了string或者class文件的ID属性是string