简体   繁体   English

动态(复杂)查询 JPA/Hibernate 上的动态参数

[英]Dynamic parameters on dynamic (complex) query JPA/Hibernate

I am trying to build a complex query that involves filtering which i did it like so on JDBC:我正在尝试构建一个复杂的查询,它涉及我在 JDBC 上所做的过滤:

private String buildFilteredQuery(List<Long> extensions, List<Long> categories, Long courseId) {
        ...
        StringBuilder extensionQuery = new StringBuilder();
        if (!extensions.isEmpty()) {
            extensionQuery.append("AND (");
            extensions.forEach(e -> extensionQuery.append("fileExtensionId = ? OR "));
            extensionQuery.delete(extensionQuery.length() - 4, extensionQuery.length());
            extensionQuery.append(")");
        }
        ...
    }

The problem is that now over JPA i can't really do this since instead of the ?问题是现在在 JPA 上我真的不能这样做,因为 ? i should put the variable to be mapped (eg :fileExtension )我应该把要映射的变量(例如:fileExtension

So how can i build a dynamic query that takes dynamic parameters to it?那么我怎样才能构建一个带有动态参数的动态查询呢?

Like @Guillaume said, i ended up only using one stament with an IN clause:就像@Guillaume 说的那样,我最终只使用了一个带有 IN 子句的句子:

private String buildFilteredQuery(List<Long> extensions, List<Long> categories, Long courseId) {
        ...
        StringBuilder query = new StringBuilder();
        if (!extensions.isEmpty()) query.append("AND ( fileExtensionId IN ( :extensionIds ) ) ");
        ...
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM