java - 有没有办法对我的 JPQL 查询尝试的 WHERE 条件进行排序?

标签 java sql hibernate jpa jpql

我有一个疑问

SELECT CAST(p.propertyId AS long) FROM Property p
 WHERE p.propertyId IS NOT NULL
   AND p.propertyId NOT LIKE '%-%'
   AND p.propertyId NOT LIKE '%+%'

效果非常好,因为 WHERE 条件成功过滤掉了 propertyId 的所有非数字值。但如果我尝试使用强制转换作为条件

SELECT p FROM Property p
 WHERE p.propertyId IS NOT NULL
   AND p.propertyId NOT LIKE '%-%'
   AND p.propertyId NOT LIKE '%+%'
   AND CAST(p.propertyId AS long) BETWEEN 999999 AND 10000000

它失败并出现错误java.sql.SQLException:ORA-01722:无效数字

有没有办法强制最后一个条件只检查前三遍?

最佳答案

如果您的第一个请求过滤掉您可以从其结果中选择的所有非数字值:

SELECT p FROM
(
SELECT p1 FROM Property p1
 WHERE p1.propertyId IS NOT NULL
   AND p1.propertyId NOT LIKE '%-%'
   AND p1.propertyId NOT LIKE '%+%'
)
where CAST(p.propertyId AS long) BETWEEN 999999 AND 10000000

关于java - 有没有办法对我的 JPQL 查询尝试的 WHERE 条件进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37814660/

相关文章:

java - 使用 GROUP BY 和 RETURN ENTITY LIST 的 Hibernate 标准

java - 如何摆脱 iText XMLWorker 中的 Helvetica?

java - Hadoop Mapper参数说明

java - 在 DIV HTML 中遍历或查找元素的最快方法

mysql - 从多个表中选择相同的数据并忽略其他列

database - hibernate : Foreign key has the wrong number of column. 应该是 0

java - org.hibernate.HibernateException 错误

java - newConcurrentHashSet() 无法从 IntelliJ 中的 com.google.guava 解析?

sql - 如何在sql中对链表进行排序?

javascript - 在 Node 项目中通过 sequelize 搜索所有潜在的 SQL 注入(inject)