1. 程式人生 > >Expected: class java.lang.Long, got class java.lang.Integer異常處理

Expected: class java.lang.Long, got class java.lang.Integer異常處理

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