当使用查询语句查询实体时,用到getSingleResult()方法,如果无该实体,则会报错 “ No entity found for query ”。getSingleResult()方法本身如此,除非在不确保是否存在该实体的时候不调用该方法。
解决办法:
先调用getResultList()方法,判断返回列表是否为空,若为空,则实体不存在,返回null;若不为空,可调用getSingleResult()方法获取实体,或者直接
getResultList()。get(0);
如:
if(query.getSingleResult()!=null){
//返回类型为List时不用强转,为什么????
fq=(FavoriteQuestion) query.getSingleResult();
return fq.getId();
}
改为:
if(query.getResultList().size()!=0){
fq=(FavoriteQuestion) query.getSingleResult();
return fq.getId();
}