我正在查看JPQL SELECT 的这个示例,它说您可以返回List<Object[]>
:
TypedQuery<Object[]> query = em.createQuery(
"SELECT c.name, c.capital.name FROM Country AS c", Object[].class);
List<Object[]> results = query.getResultList();
for (Object[] result : results) {
System.out.println("Country: " + result[0] + ", Capital: " + result[1]);
}
现在我这样做是因为:
因为托管实体对象的构造有一些开销,所以返回非实体对象的查询,如上面的两个查询,通常更有效。此类查询主要用于有效地显示信息。对于需要托管实体对象的更新或删除实体对象的操作,它们的生产力较低。
现在我有类似的实体,除了实体 Country 中的实体 Capital 可以为 NULL。当我想要获取时List<Object[]>
,它无法正常工作,因为它无法从 Capital 访问属性名称(正如我所说的 Capital 可以为 NULL)。我希望如果 Capital 为 NULL,则 Object[] 应该包含该属性的 NULL 值。