想使用entityManager.createNativeQuery查询返回实体或vo,
public XxVo getXx(){
String sql =""; Query query = //查询1过时了 //entityManager.createNativeQuery(sql);query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(XxVo.class));
//查询2,推荐
query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(TDeanKdyschoolVo.class));
//方法一 List<XxVo> resultList = query.getResultList(); return resultList.get(0);
//方法二
return (XxVo)query.getSingleResult();
}
关于what is better: getSingleResult, or getResultList JPA
getSingleResult throws NonUniqueResultException, if there are multiple rows. It is designed to retrieve single result when there is truly a single result.
The way you did is fine and JPA is designed to handle this properly. At the same time, you cannot compare it against getSingleResult any way, since it won't work.
However, depend on the code you are working on, it is always better to refine the query to return single result, if that's all what you want - then you can just call getSingleResult.