刚学习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());
}
代码如下:
【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());
}
此处传的id类型必须和member中id的类型一致;看错误应该是你Member 中id定义成String;
但是这里传的是1是基本类型,JDK自动包装成Integer类型的;改成"1"就好了 ;
还有LZ说
我百度过是说:【提供了错误的id类型,期待一个Integer类型,却得到一个String类型】
其实正确地翻译应该是:【提供了错误的id类型,期待一个String类型,却得到一个Integer类型】