春天JPA休眠查询生成器

问题描述 投票:1回答:2

我只是想创建查询dynamically.Means我只是想,以指定列排序将occure和类型排序为ASC or DESC也与此查询我必须限制没有记录。我在这里使用PostgreSQL的。所以在查询我应该指定限制和抵消。

使我发送的意义属性界面的四个变量。

workflow details interface.Java

@Configuration
public interface WorkflowDetailsInterface extends CrudRepository<WorkflowDetails, Integer> {
@Query(value ="SELECT workflow_id, workflow_name, workflow_description, workflow_definition, "
        + "camunda_workflow_json, camuda_deployment_id, camunda_status,diagnostic_flag, "
        + "active, del_flag  FROM workflow  ORDER BY :orderByColoumn  : orderByOrder LIMIT  :recordCountLimit OFFSET :startLimit",nativeQuery = true)
    List<WorkflowDetails> listWorkflowName(@Param("startLimit") int startLimit,
            @Param("recordCountLimit")int recordCountLimit,@Param("orderByColoumn")String orderByColoumn,
            @Param("orderByOrder")String orderByOrder);
}

这里,@Param("startLimit") int startLimit将成为起点@Param("recordCountLimit")int recordCountLimit这是偏移@Param("orderByColoumn")String orderByColoumn顺序按列名称@Param("orderByOrder")String orderByOrder为了通过类型ASC或DESC

如何动态绑定这些变量,以我的JPA查询

java sql postgresql hibernate spring-data-jpa
2个回答
0
投票

相反延伸CrudRepository延伸PagingAndSortingRepository。 “findAll”的方法提供你的目的。 PageRequestPageable的实现。您可以指定限制,偏移和排序的详细信息。选中此article更多地了解使用情况。你可能不需要本地查询使用这种方法。


0
投票

为什么不使用存储过程中的PostgreSQL和传递参数提排序和限制参数传递给它的列。请参阅here获取更多信息。

你可以这样调用存储过程:

String sql ="call <stored_procedure_name>(:parameter1)";
@SuppressWarnings("deprecation")
Query query = sessionFactory.getCurrentSession().createNativeQuery(sql).addEntity(<your persistant>.class).setParameter("parameter1", <your param>);

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.