我试图通过发送日语中的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;
}
如果我需要提供任何其他详细信息,请与我们联系。
答案 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