我正在使用一种方法,该方法根据用户在从数据库检索数据时要应用的一组过滤器生成查询字符串。因此,对于每个新过滤器,该方法会附加类似AND variable_x = '4'
的内容。
我想使用spring数据的JpaRepository
接口,我想创建一个用@Query
注释的方法,以便能够执行这个生成的查询。但是,@Query
需要一个常量作为值。那么有没有办法让@Query
执行这个生成的查询?像这样的东西可以作为例子吗?我可以将整个JPQL查询作为参数提供给@Query
吗?
@Query("?1")
public abstract void executeRuntimeGeneratedQuery(String query);
或者有更优雅的解决方案可以解决我的问题吗?
答案 0 :(得分:0)
我可以将整个JPQL查询作为参数提供给
@Query
吗?
不,这是不可能的。 @Query
注释是静态的,你可以只使用JPA支持的参数(包括SpEL表达式),它基本上是表达式,而不是列或表名,当然不是完整的语句。
或者有更优雅的解决方案可以解决我的问题吗?
是的,有其他选择。根据您的描述Specifications seem to fit the bill best。
当然,你可以将它与custom methods结合使用,如果你想做的不仅仅是规格所能提供的,那也可以节省一天。