小编Sha*_*til的帖子

遇到数组值参数绑定,但期待 [java.lang.String (n/a)]

我需要根据传递的参数动态生成查询并需要加入三个表,在使用 EntityManager CriteriaBuilder 构建查询时遇到异常,如果我将其转换为 Criteria,则相同的代码结构正在工作,但我只想使用 CriteriaBuilder。

        @Override
    @Transactional
    public List<DatapointReply> getAllByFilter(Map<String, List<Object>> filter, int maxResults,
            boolean matchAllFilters) {
        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
        CriteriaQuery<DatapointReply> criteriaQuery = criteriaBuilder.createQuery(DatapointReply.class);
        Root<PartDatapointReply> datapointReplyRoot = criteriaQuery.from(PartDatapointReply.class);
        Join<DatapointReply, Datapoint> datapointJoin = null;
        Join<PartDatapointReply, Part> partJoin = null;
        criteriaQuery.select(datapointReplyRoot);
        if (filter.containsKey("datapointkey")) {
            datapointJoin = datapointReplyRoot.join("datapoint");
        }
        if (filter.containsKey("partstatus") || filter.containsKey("partmodelnumber")) {
            partJoin = datapointReplyRoot.join("part");
        }

        List<Predicate> predicateList = new ArrayList<>();
        for (String searchKey : filter.keySet()) {
            List<Object> searchTerms = filter.get(searchKey);
            Predicate predicate = buildSearchCriterion(new String[searchTerms.size()], true, JunctionType.OR, datapointReplyRoot, …
Run Code Online (Sandbox Code Playgroud)

jpa entitymanager hibernate-criteria jpa-2.0 hibernate-5.x

2
推荐指数
1
解决办法
2305
查看次数