日期:2014-05-18  浏览次数:20595 次

Hibernate中session.load()方法报错
Session session = sessionFactory.openSession();		
Transaction transation = session.beginTransaction();
//获取需要修改的用户
Employee emp = (Employee)session.load(Employee.class, 2);


如果我只有直接写int类型,就会报错,但是如果更改为Integer类型的实例就可以,代码如下

Session session = sessionFactory.openSession();		
Transaction transation = session.beginTransaction();
//获取需要修改的用户
Employee emp = (Employee)session.load(Employee.class, new Integer(2));


为什么会出现这样的情况?不是可以自动拆箱装箱的吗?我用的jdk 是1.7的

------解决方案--------------------
把异常贴出来呗

------解决方案--------------------
程序没有直接在eclipse里显示语法错误,那说明自动拆装箱是ok的。
但具体到在hibernate中的操作,那要看你引用的hibernate版本本身是否支持自动拆装了。
应该是你的hibernate本身不允许这么做,所以你才必须要写成对象类型才能进行查询,这和jdk已经无关了
------解决方案--------------------
用int试了一下,好用。
LZ最后把异常贴出来
------解决方案--------------------
引用:
引用:

程序没有直接在eclipse里显示语法错误,那说明自动拆装箱是ok的。
但具体到在hibernate中的操作,那要看你引用的hibernate版本本身是否支持自动拆装了。
应该是你的hibernate本身不允许这么做,所以你才必须要写成对象类型才能进行查询,这和jdk已经无关了


程序是有包语法错误的在load那报错了
我的Hibernate是3.3……


如果真是语法错误的话,请确认eclipse中window->Preferences->java->Compiler , 里面的Compiler compliance level是不是选中了你JDK相应版本的compiler 。JDK7我没用过,但我想你这至少要选个1.5,才能保证自动拆装正确。
你先试试
------解决方案--------------------
LZ的JDK不支持自动拆装箱
------解决方案--------------------
当然要用Integer了。。