Spring data jpa createNativeQuery-返回页面
我的存储库有以下自定义实现Spring data jpa createNativeQuery-返回页面,spring-data-jpa,Spring Data Jpa,我的存储库有以下自定义实现 public final EntityManager entityManager; public ImputacionRepositoryImpl(EntityManager entityManager) { this.entityManager = entityManager; } @Override public List<ImputacionData> imputacionesList() { Query q = entityMa
public final EntityManager entityManager;
public ImputacionRepositoryImpl(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Override
public List<ImputacionData> imputacionesList() {
Query q = entityManager.createNativeQuery("SELECT " + "empleado.id as empleadoId,"
+ "MAX(imputacion.dia) as dia," + "imputacion.id as id " + "FROM rrhh.empleado empleado "
+ "JOIN rrhh.imputacion imputacion ON imputacion.empleado = empleado.id "
+ "WHERE empleado.id NOT IN (SELECT empleado.id " + "FROM rrhh.empleado empleado "
+ "LEFT JOIN rrhh.imputacion imputacion ON imputacion.empleado = empleado.id " + "WHERE "
+ "(imputacion.dia >= '2017-06-01' AND imputacion.dia <= '2017-10-31') "
+ "GROUP BY empleado.id,imputacion.empleado, imputacion.id) " + "AND true=true "
+ "GROUP BY empleado.id,imputacion.empleado, imputacion.id ORDER BY imputacion.dia DESC");
List<ImputacionData> imputaciones = q.getResultList();
return imputaciones;
}
我需要它,而不是返回列表,返回页面,但我不知道这是否可能,以及如何执行。因此,您可以使用,在您的情况下,它可能看起来像:
@Override
public Page<ImputacionData> imputacionesList() {
Query q = entityManager.createNativeQuery("SELECT " + "empleado.id as empleadoId,"
+ "MAX(imputacion.dia) as dia," + "imputacion.id as id " + "FROM rrhh.empleado empleado "
+ "JOIN rrhh.imputacion imputacion ON imputacion.empleado = empleado.id "
+ "WHERE empleado.id NOT IN (SELECT empleado.id " + "FROM rrhh.empleado empleado "
+ "LEFT JOIN rrhh.imputacion imputacion ON imputacion.empleado = empleado.id " + "WHERE "
+ "(imputacion.dia >= '2017-06-01' AND imputacion.dia <= '2017-10-31') "
+ "GROUP BY empleado.id,imputacion.empleado, imputacion.id) " + "AND true=true "
+ "GROUP BY empleado.id,imputacion.empleado, imputacion.id ORDER BY imputacion.dia DESC");
Page<ImputacionData> page = new PageImpl<>(q.getResultList());
return page;
}
因此,您可以使用,在您的情况下,它可能看起来像:
@Override
public Page<ImputacionData> imputacionesList() {
Query q = entityManager.createNativeQuery("SELECT " + "empleado.id as empleadoId,"
+ "MAX(imputacion.dia) as dia," + "imputacion.id as id " + "FROM rrhh.empleado empleado "
+ "JOIN rrhh.imputacion imputacion ON imputacion.empleado = empleado.id "
+ "WHERE empleado.id NOT IN (SELECT empleado.id " + "FROM rrhh.empleado empleado "
+ "LEFT JOIN rrhh.imputacion imputacion ON imputacion.empleado = empleado.id " + "WHERE "
+ "(imputacion.dia >= '2017-06-01' AND imputacion.dia <= '2017-10-31') "
+ "GROUP BY empleado.id,imputacion.empleado, imputacion.id) " + "AND true=true "
+ "GROUP BY empleado.id,imputacion.empleado, imputacion.id ORDER BY imputacion.dia DESC");
Page<ImputacionData> page = new PageImpl<>(q.getResultList());
return page;
}
你想要回页吗?你说的“页面”是什么意思?对,我正需要它。非常感谢。你想要回页吗?你说的“页面”是什么意思?对,我正需要它。非常感谢。这是正确的,我遗漏了一件事,在我的方法中,有一个页面将它应用于我前面的查询。publicpage imputacionslist Pageable Pageable,我将其应用于查询。非常感谢你能回答我最后一个问题吗?非常感谢。它可以工作是的,但是分页的响应头中的linh是错误的。。。一个解决方案?没错,我遗漏了一件事,在我的方法中,有一页从我的前面将其应用于查询。publicpage imputacionslist Pageable Pageable,我将其应用于查询。非常感谢你能回答我最后一个问题吗?非常感谢。它可以工作是的,但是分页的响应头中的linh是错误的。。。解决方案?