【问题标题】:JPA - Filter MySQL DOUBLE (6,2) with LIKE of CriteriaQueryJPA - 使用 CriteriaQuery 的 LIKE 过滤 MySQL DOUBLE (6,2)
【发布时间】:2017-08-17 17:18:05
【问题描述】:

我想使用 CriteriaQuery 的 LIKE-Function 从我的数据库中过滤 DOUBLE (6,2) 值。但它抛出一个异常:

Internal Exception: java.sql.SQLSyntaxErrorException: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.

代码:

    stundensatz.ifPresent(s -> criteriaQuery.where(criteriaBuilder.like(mitarbeiter.get("stundensatz"), "%" + s + "%")));

“Stundensatz”是指小时费率。我对INTEGER做了同样的事情,效果很好。如何使用 LIKE 过滤 DOUBLE?我真的需要帮助。我在这里找不到任何关于此的文章。我尝试将mitarbeiter.get("stundensatz") 转换为字符串或整数,但这不起作用。

提前谢谢你。 sven_meye

【问题讨论】:

  • 你是如何尝试将 doulbe 转换为 String 的?
  • 因为like 仅适用于字符串,所以强制转换是必不可少的
  • 我试过 toString() 和 CriteriaBuilder.toString
  • 但不治疗?
  • 什么是 TREAT ?

标签: java mysql jpa criteria-api


【解决方案1】:

我可以将like 函数与这样的数字一起使用:

Expression plzInt = kategorie.get("nummer");
Expression plzStr = criteriaBuilder.function("CHAR", String.class, plzInt);
predicates.add(criteriaBuilder.like(criteriaBuilder.upper(plzStr), "%" + nummer.trim().toUpperCase() + "%"));

【讨论】:

    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 2012-07-24
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    相关资源
    最近更新 更多