如何以List <map <string,object =“”>&gt;获得结果使用CriteriaQuery?

时间:2018-04-05 09:29:01

标签: hibernate jpa spring-data-jpa criteria-api

我有大约50列的大表,客户将决定他想要的列。基于我需要提供数据。

使用javax.persistence.Query,我可以选择如下的特定列:

String query = "Select new map (dataId as dataId, dataNumber as dataNumber) From Data";
Query q = entityManager.createQuery(query).setMaxResults(10);
List<Map<String, Object>> dataList = q.getResultList();

我想用CriteriaQuery实现它,我尝试如下:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Data> cQuery = cb.createQuery(Data.class);
Root<Data> c = cQuery.from(Data.class);
cQuery.multiselect(c.get("dataId"), c.get("dataName"));
List<Data> t = entityManager.createQuery(cQuery).setMaxResults(10).getResultList();

对于上面的代码,它期望构造函数为“Data(dataId,dataName)”。

我想要一种方法,使用CriteriaQuery从表中查询特定字段,而无需为所选字段编写构造函数。 请帮帮我。

1 个答案:

答案 0 :(得分:0)

Hibernate User Guide中所述,在这种情况下,使用maplist进行动态实例化也是HQL的附加功能,而不是JPQL的一部分。

标准API没有提供构造此类选择的方法。