当我运行以下JPQL时,我有一个包含200列且包含许多行数据的实体。
StringBuffer nativeQuery = new StringBuffer();
nativeQuery.append("SELECT b FROM PeopleMaster b WHERE b.gdGrp=?1");
query = getEntityManager().createQuery(nativeQuery.toString());
query.setParameter(1, searchParam.getCode());
List<PeopleMaster> list = query.getResultList();
列表正确填充和遍历下一部分。 现在我要求我只需要一列数据用于下拉列表。
StringBuffer nativeQuery = new StringBuffer();
nativeQuery.append("SELECT distinct(b.empId) FROM PeopleMaster b WHERE b.gdGrp=?1");
我知道将结果分配给PeopleMaster(List<PeopleMaster> list)
是不兼容的,因为我们只提取一列数据。
那么适当的分配方式是什么?我是否需要创建一个包含一列的新实体,然后将结果分配给List?
答案 0 :(得分:1)
StringBuffer nativeQuery = new StringBuffer();
nativeQuery.append("SELECT distinct(b.empId) FROM PeopleMaster b WHERE b.gdGrp=?1");
Query q = getEntityManager().createNativeQuery(nativeQuery.toString());
query.setParameter(1, searchParam.getCode());
List<Object[]> ids = q.getResultList();
for (Object[] record : ids) {
System.out.println("Found a distinct employee id: " + record[0]);
}
如您所见,从createNativeQuery
返回的结果是List<Object>
,每条记录对应一个对象数组。在您的情况下,每条记录只有一列ID。