Expected: class java.lang.Long, got class java.lang.Integer异常处理_javahibernate 3.1的查询,主要代码如下:

Project project = (Project)session.get(Project.class, 1);

ms sql 2005数据库中主键类型是bigint。

 

使用main方面测试,出现: org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class java.lang.Long, got class java.lang.Integer

或者使用Junit测试,出现:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

错误原因:

session.get(Project.class, 1);方法中的参数1为Int类型,会被自动转换为Integer,而Project类中的ProjectId属性是Long,它对应的配置文件中也是java.util.Long,所以出现java.lang.Integer cannot be cast to java.lang.Long异常,

解决方法:

代码改成Project project = (Project)session.get(Project.class, 1L);在参数中给1加L,表示它是long类型,会自动转换成Long,或者Project project = (Project)session.get(Project.class, new Long(1));