这是我在 java 中的实现,如果数据存在则检索单行,如果不存在数据则检索 null 或空。
public SalesForecast isSalesForecastUser(String mobile) throws LookupException {
SalesForecast salesForecast = null;
Session session = null;
try {
session = hibernateTemplate.getSessionFactory().openSession();
salesForecast = (SalesForecast) session.createQuery(" from SalesForecast salesforcast where salesforcast.ppUserMobile ='" + mobile + "' ").list().get(0);
} catch (NullPointerException n) {
n.printStackTrace();
} catch (IndexOutOfBoundsException n) {
n.printStackTrace();
} finally {
session.close();
}
return salesForecast;
}
如果有单行或多行,这工作正常,但当没有匹配的行时抛出此异常:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
最佳答案
你可以这样试试
Query query = session.createQuery(" from SalesForecast salesforcast where
salesforcast.ppUserMobile ='" + mobile + "' ");
List results = query.list();
if(results!=null){
return results.get(0);
} else{
return null;
}
在你当前的代码中
salesForecast = (SalesForecast) session.createQuery(" from SalesForecast
salesforcast where salesforcast.ppUserMobile ='" + mobile + "' ").list()
// list will null if no result there, So you will get NullPoiterException
关于java - 如果数据存在或如果数据不存在如何检索单行 - hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21374760/