entityManager.createNativeQuery查询返回实体或vo及提示setResultTransformer过时处理

想使用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.


版权声明:本文为KeepLearnZhangXiaoBo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。