1. 程式人生 > >Hibernate報錯問題解決

Hibernate報錯問題解決

org.hibernate.TypeMismatchException: Provided id of the wrong type for class

原文出處
在使用Atomikos寫demo的時候,用spring整合hibernate寫一個查詢,報錯:org.hibernate.TypeMismatchException: Provided id of the wrong type for class aniyo.jta.atomikos.domain.BankAccount. Expected: class java.lang.Integer, got class java.lang.String
方法如下:
Java程式碼 收藏程式碼
@Override
public BankAccount getByUsername(String username) {
return (BankAccount) this.getSession().get(BankAccount.class, username);
}

因為沒怎麼用過hibernate,很多東西也不熟悉,到網上查了一下相關資料,後面才發現,this.getSession().get()方法,是通過id來查詢的,所以這裡會報錯說,提供id型別錯誤,我這裡傳的是一個String的username,所以這裡要通過username查詢,可能過createQuery來查;最後修改如下:
Java程式碼 收藏程式碼
@Override
@SuppressWarnings(“unchecked”)
public BankAccount getByUserName(String username) {
List list = this.getSession().createQuery(
“select t from BankAccount t where t.username=:userName”)
.setParameter(“userName”, username).list();
return list.isEmpty() ? null : list.get(0);
}