Expected: class java.lang.Long, got class java.lang.Integer異常處理
阿新 • • 發佈:2019-02-16
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));