在NativeQuery中具有可分页的Spring数据

时间:2018-09-27 23:48:54

标签: spring-boot spring-data-jpa

我有这个本地查询:

@Query(nativeQuery = true,
            countQuery = "SELECT count(*) FROM db_central.mensagem WHERE usuario_id = ?1",
            value = "SELECT m.id, m.data, u.nome as usuario, \n" +
            "ultima_visualizacao, \n" +
            "(SELECT max(resposta) FROM db_central.mensagem_destinatario md WHERE md.mensagem_id = m.id)as ultima_resposta, \n" +
            "(SELECT COUNT(*) FROM db_central.mensagem_destinatario md WHERE md.mensagem_id = m.id) as destinatarios, \n" +
            "(SELECT COUNT(*) FROM db_central.mensagem_destinatario_resposta mdr JOIN db_central.mensagem_destinatario md ON md.id = mdr.mensagem_destinatario_id WHERE md.mensagem_id = m.id)  as responderam, \n" +
            "ARRAY(SELECT nome FROM db_central.mensagem_tipo_consulta mtc JOIN db_central.tipo_consulta tc ON tc.id = mtc.tipo_consulta_id WHERE mtc.mensagem_id = m.id ORDER BY natureza_cartorio_id) as tipos \n" +
            "FROM db_central.mensagem m \n" +
            "JOIN db_central.usuario u ON u.id = m.usuario_id WHERE m.usuario_id = ?1")
Page<MensagemEnviada> findByUsuarioId(Integer id, Pageable pageable);

在我的控制器中,我有

@GetMapping("/enviada/{id}")
public Page<MensagemEnviada> findEnviadas(@PathVariable  Integer id, @PageableDefault(sort = { "id"}, direction = Sort.Direction.ASC) Pageable page){
        return mensagemService.findbyUsuario(id, page);
}

但是当spring通过在别名md.id中放置别名并生成正确的m.id来生成订单时,是否可以在Pageable中进行配置?

谢谢

0 个答案:

没有答案