我想要一个JPQL查询,可能看起来像:
entityManager.createQuery("Select a.* from A a WHERE CAST(a.num AS TEXT) LIKE '%345%' ", A.class);
Run Code Online (Sandbox Code Playgroud)
其中a.num是整数。我想将此转换为String以使用LIKE标准。但是,上面的转换在JPQL中不起作用。关于如何实现这一点的任何想法?
您能具体一点,您的问题是什么?您是否有某种错误,或者查询结果是错误的?
因为这段代码对我来说很好用:
session.createQuery("from MyObject where CAST(id as text) like :id").setParameter("id", "%1").getResultList();
Run Code Online (Sandbox Code Playgroud)
我正在使用Hibernate 5.2和Postgresql 9.5。另外,如果您在理解问题出在哪里时,可以尝试编辑hibernate.cfg.xml或用于使Hibernate显示其发送的查询的任何配置文件,方法如下:
<property name="hibernate.show_sql">true</property>
Run Code Online (Sandbox Code Playgroud)
我也有同样的需求。这适用于JPA 2.0和Hibernate 5.0.2:
entityManager.createQuery(
"Select a.* from A a WHERE CONCAT(a.num, '') LIKE '%345%' ", A.class);
Run Code Online (Sandbox Code Playgroud)
来自 hibernate 文档,“cast(... as ...)”,其中第二个参数是 Hibernate 类型的名称。根据休眠类型列表,它应该是string
(区分大小写!)。
所以请求应该是:
entityManager.createQuery("select a.* from A a WHERE CAST(a.num AS string) LIKE '%345%' ", A.class);
Run Code Online (Sandbox Code Playgroud)
是从以下原因中获取和检查的:org.hibernate.QueryException:无法解析 CAST 的请求类型:INT答案。
归档时间: |
|
查看次数: |
14163 次 |
最近记录: |