日语

时间:2016-04-04 20:48:23

标签: java hibernate rest spring-data-jpa criteria-api

我试图通过发送日语中的url查询参数来获得结果,如下所示。示例网址是 https://xyz/accounts?name=お金

以日语或其他语言发送查询参数是否遵循惯例?如果是以下代码中应该进行哪些更改? 以下代码已经过测试,适用于英文查询参数值,如name = data。

此外,如果我对数据库进行查询,它可以正常工作并返回结果。

从a.plan = p.id中的内部联接计划p中选择a.id,a.plan,p.name,其中(a.id in(1,2,3))和p.name =& #39;お金'按p.name asc;

排序

但是当使用条件查询传递此查询参数值时,它只给出一个空数组。

 public List<AccountEntity> createCriteriaQuery(final List<String> accountIdList,
                final MultiValueMap<String, String> allRequestParams) {
    final CriteriaBuilder cb = entityManager.getCriteriaBuilder();

            final CriteriaQuery<AccountEntity> cq = cb.createQuery(AccountEntity.class);
            final Root<AccountEntity> accountEntity = cq.from(AccountEntity.class);

            final Join<AccountEntity, PlanEntity> account = accountEntity.join(AccountEntity_.planEntity);

            final List<Predicate> predicates = new ArrayList<Predicate>();

            // Default Predicates for accounts
            predicates.add(accountEntity.get(AccountEntity_.id).in(accountIdList));

            if (!allRequestParams.isEmpty()) {              
               if (allRequestParams.containsKey(ApplicationConstants.QUERYPARAM_PLANNAME)) {
                    final String planName = allRequestParams.get(ApplicationConstants.QUERYPARAM_PLANNAME).get(0);

                    // For planName we check for "contains" which is sql like query
                    predicates.add(cb.like(account.get(PlanEntity_.name), "%" + planName + "%"));
                }
            }

它被添加到谓词中,当我调试应用程序时,我可以看到它添加的内容与在url中传递的内容完全相同,但我想它在以下步骤中由于某种原因无法创建查询。 此外,当我打印planName时,我正在

cq.select(accountEntity).where(predicates.toArray(new Predicate[] {}));
                cq.orderBy(cb.asc(account.get(PlanEntity_.name)));
                final TypedQuery<AccountEntity> qry = entityManager.createQuery(cq);
                final List<AccountEntity> accountEntityList = qry.getResultList();

        //So I get accountEntityList as []     

         entityManager.close();
                return accountEntityList;
            }

如果我需要提供任何其他详细信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

这解决了这个问题。我们正在使用Spring启动,我在我的application.yml文件中添加了这个(?useUnicode = yes&amp; characterEncoding = UTF-8)并且它有效。

弹簧:

datasource:

    url:jdbc:mysql://localhost:3306/mydb?useUnicode=yes&characterEncoding=UTF-8

如果你有application.properties,那么

spring.datasource.url = JDBC:MySQL的://本地主机:3306 / MYDB了useUnicode = YES&安培;的characterEncoding = UTF-8