Hibernate中session.load()方法报错

J2EE 码拜 10年前 (2015-04-04) 1080次浏览 0个评论
 
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的

Hibernate中session.load()方法报错
6分
程序没有直接在eclipse里显示语法错误,那说明自动拆装箱是ok的。
但具体到在hibernate中的操作,那要看你引用的hibernate版本本身是否支持自动拆装了。
应该是你的hibernate本身不允许这么做,所以你才必须要写成对象类型才能进行查询,这和jdk已经无关了
Hibernate中session.load()方法报错
5分
用int试了一下,好用。
LZ最后把异常贴出来
Hibernate中session.load()方法报错
异常如下:
Exception in thread “main” java.lang.Error: Unresolved compilation problem: 
The method load(Class, Serializable) in the type Session is not applicable for the arguments (Class, int)

at com.liang.view.TestMain.updateEmployee(TestMain.java:43)
at com.liang.view.TestMain.main(TestMain.java:20)

Hibernate中session.load()方法报错
引用 2 楼  的回复:

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

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

Hibernate中session.load()方法报错
而且我用相同的Hibernate的jar包引入大致相同的项目,直接使用int类型是没问题的
Hibernate中session.load()方法报错
10分
引用 5 楼  的回复:

引用 2 楼  的回复:

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

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

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

Hibernate中session.load()方法报错
5分
LZ的JDK不支持自动拆装箱
Hibernate中session.load()方法报错
2分
当然要用Integer了。。
Hibernate中session.load()方法报错
引用 8 楼  的回复:

LZ的JDK不支持自动拆装箱

怎么可能,我的jak是比较新的版本的,jdk-7u1-windows-i586

Hibernate中session.load()方法报错
[Quote=引用 7 楼  的回复:]

呵呵呵!谢谢leftstick的提醒!原来这个项目使用的JDK是1.3的,没有使用我的JDK,我把版本改为我的JDK后,就能自动装箱拆箱了,问题终于解决了!谢谢

Hibernate中session.load()方法报错
引用 9 楼  的回复:

当然要用Integer了。。

不,JDK1.5后支持自动拆装,我另外一个项目就可以直接使用int类型

Hibernate中session.load()方法报错
我也是同样的问题,貌似只能用Integer 包装下才能使用

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Hibernate中session.load()方法报错
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!