我想使用 CriteriaQuery 的 LIKE 函数从数据库中过滤 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")
转换为字符串或整数,但这不起作用。
提前谢谢您。 斯文_米耶
最佳答案
我可以对数字使用 like
函数,如下所示:
Expression plzInt = kategorie.get("nummer");
Expression plzStr = criteriaBuilder.function("CHAR", String.class, plzInt);
predicates.add(criteriaBuilder.like(criteriaBuilder.upper(plzStr), "%" + nummer.trim().toUpperCase() + "%"));
关于java - JPA - 使用 CriteriaQuery 的 LIKE 过滤 MySQL DOUBLE (6,2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43005074/