首页 > 解决方案 > 在数据库中搜索 Integer with Like Hibernate

问题描述

我想用类似的方法在 MySQL 数据库中搜索整数。我正在jdk-12.0.2使用Hibernate

如果它不是整数,我可以使用以下代码:

:what = "Help"
(ArrayList<Number>) entityManager.createQuery("FROM Number WHERE definition LIKE :what", Number.class ).setParameter("what", what + "%").getResultList();

这完美地工作并给了我我的 ArrayList of Numbers。

如果我只使用 SQL 脚本,我可以使用它:

SELECT * FROM juna where CAST(id as CHAR) like '1%';

但是如果我用它CAST(id as CHAR)来替换definition它会给我这个例外:

Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.QueryException: Could not resolve requested type for CAST : CHAR

谁能帮我解决这个问题?(也欢迎提出改进我的工作代码的建议)

标签: javamysqlsqlhibernatejpql

解决方案


cast不是 jpql 的一部分,您在调用EntityManager#createQuery. 您应该EntityManager#createNativeQuery改用普通 sql。请参阅文档


推荐阅读