JPA什么是获取摘要对象的最佳方法?

时间:2017-08-08 08:53:07

标签: java spring hibernate jpa

我有一个默认的spring web MVC应用程序,我正在使用JPA,有时我需要创建某种Summary视图页面,例如:我有三个对象(在我的情况下我有很多)House,Car和人,在这个例子中,众议院有汽车和人,所以在我的页面视图中我需要做类似

的事情
House 1: 5 Cars, 6 Persons
House 2: 3 Cars, 3 Persons
House 3: 6 Cars, 2 Persons etc...

我正在考虑使用本机查询,因为我对SQL查询非常好,所以没有问题,但是JPA没有像字符串MAP那样返回的内容,我对此一无所知JPA表现。

1 个答案:

答案 0 :(得分:1)

JPA查询

SELECT
  h
  , COUNT(c)
  , COUNT(p)
FROM
  House h
LEFT JOIN
  h.cars c
LEFT JOIN
  h.persons p
GROUP BY
  h

可以entityManager.createQuery(query).getResultList()执行,以获得List<Object[]>

List的每个元素都是一个包含三个值的数组(对应于SELECT子句中的三个值)。第一个值的类型为House(由于SELECT h),而第二个和第三个值的类型为Long

查询性能与从同一应用程序运行本机查询不会有太大的不同,因为从JPQL到SQL的转换非常快。