我只是想创建查询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查询
相反延伸CrudRepository
延伸PagingAndSortingRepository
。 “findAll”的方法提供你的目的。 PageRequest是Pageable的实现。您可以指定限制,偏移和排序的详细信息。选中此article更多地了解使用情况。你可能不需要本地查询使用这种方法。
为什么不使用存储过程中的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>);
希望能帮助到你。