java - JPA - 使用 CriteriaQuery 的 LIKE 过滤 MySQL DOUBLE (6,2)

标签 java mysql jpa criteria-api

我想使用 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/

相关文章:

java - Hibernate 4.3 加载所有 hbm 文件,即使它们没有在持久性单元中声明

java - 使用 commons-net 重试上传到 FTP 的正确方法是什么?

将运行时执行与覆盖相结合的 Java 工具

mysql - 在 MySQL Rails 4 中使用数组

.Net Core 中的 MySql.Data.MySqlClient.MySqlException : 'Unable to connect to any of the specified MySQL hosts.

java - 强制 JPA 查询急切地返回所有集合/字段

java - 迭代器方法?

java - Java 中最大精度的测试编号

sql - 如果字段在 MySQL 中为空,则返回 0

java - hibernate 级联