Spring Data dynamic query

做~自己de王妃 提交于 2019-12-05 15:35:16

问题


I'm trying to set up a dynamic query using spring data, basically I have an array with a bunch of characteristics and I need to assemble the query based on those characteristics, pretty much something like "WHERE characteristic = A AND characteristic = B AND characteristic = C" but the amount of characteristics may vary.

I noticed that I can use the @Query annotation but is it possible to make the result of the @Query pageable ?

Is there any other way to accomplish this?

Page<Recipe> findDistinctByNameContainingAndOrganizationAndCharacteristicsInOrIngredientsContainingAndOrganizationAndCharacteristicsInOrDescriptionContainingAndOrganizationAndCharacteristicsInAllIgnoreCase(
        String name, Organization organization1, List<Characteristic> characteristic1,
        String ingredients, Organization organization2, List<Characteristic> characteristic2,
        String description, Organization organization3, List<Characteristic> characteristic3,
        Pageable pageable);

回答1:


Yes. @Query supports pageable.. and yes there's another way to accomplish this.

You could take a look at building query with criteria, that allow you add AND / OR where conditions dynamically. I actually use querydsl to facilitate my development.

In this post you can find a good explanation of both: http://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

Altough it could be seem more complex at beginning, the use of this feature will make your code more consistent with increasing complexity




回答2:


Use Spring Data JPA Querydsl. Read it here



来源:https://stackoverflow.com/questions/23017419/spring-data-dynamic-query

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!