spring jpa自定義複雜查詢
阿新 • • 發佈:2019-01-01
public class StudentBaseRepositoryImpl implements StudentBaseRepositoryCustom { @Autowired @PersistenceContext private EntityManager entityManager; @Override public List<Object[]> groupByStudentAsSql() { List<Object[]> list = entityManager .createNativeQuery("select address,count(*) from t_student group by address") .getResultList(); return list; } @Override public List<Object[]> groupByStudentAsHql() { List<Object[]> list = entityManager .createQuery("select address,count(*) from Student group by address") .getResultList(); return list; } @Override public List<Object[]> groupByStudentAsSpecification() { //根據地址分組查詢,並且學生數量大於3的所有地址 CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<Object[]> query = builder.createQuery(Object[].class); Root<Student> root = query.from(Student.class); query.multiselect(root.get("address"),builder.count(root.get("id"))) .groupBy(root.get("address")).having(builder.gt(builder.count(root.get("id")),3)); return entityManager.createQuery(query).getResultList(); } }