hibernate 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));