我开始知道JPA中有一个功能,它只获取我们需要的实体属性,它被称为投影查询。
大多数数据存储查询都返回整个实体作为结果,但实际上应用程序实际上只对实体的一些属性感兴趣。投影查询允许您以比检索整个实体更低的延迟和成本查询数据存储区中您实际需要的实体的特定属性。
我正在寻找投影查询的实现,但似乎有较少的资源。
我有一个包含50列的表USER。我需要从该表中仅检索5列作为实体列表。这是为了在JSF数据表中显示它。
如何通过投影查询实现这一目标?或者有更好的替代方案吗?
答案 0 :(得分:2)
select u.id, u.name, u.birthDate from User u
这将返回List<Object[]>
。列表中的每个Object[]
都将包含用户ID,用户名和用户出生日期。
您可以像常规查询一样执行它:
Query q = em.createQuery(jpql);
List<Object[]> users = q.getResultList();