Java 在WHERE子句中使用大小写的JPA查询。如何做?
如何使用JPA运行下面这样的查询。(它与普通SQL一起工作) 在Java 在WHERE子句中使用大小写的JPA查询。如何做?,java,jpa,eclipselink,Java,Jpa,Eclipselink,如何使用JPA运行下面这样的查询。(它与普通SQL一起工作) 在IS 然后(t.category为空) 可能吗?还是需要我重写这个查询?我想你不能这么做。请阅读(这里由OpenJPA提供)。以下是定义案例表达式的术语,特别是您正在使用的常规案例表达式: 事例表达式::=一般事例表达式|简单事例表达式|合并表达式| nullif表达式 常规\u case\u表达式::=case when\u子句{when\u子句}*ELSE标量\u表达式结束 when_子句::=when条件_表达式然后是标量_
IS
然后(t.category为空)
可能吗?还是需要我重写这个查询?我想你不能这么做。请阅读(这里由OpenJPA提供)。以下是定义案例表达式的术语,特别是您正在使用的常规案例表达式:
- 事例表达式::=一般事例表达式|简单事例表达式|合并表达式| nullif表达式
- 常规\u case\u表达式::=case when\u子句{when\u子句}*ELSE标量\u表达式结束
- when_子句::=when条件_表达式然后是标量_表达式
右侧的表达式必须是标量表达式
。也就是说:
- 标量表达式::=算术表达式|字符串|主|枚举|主|日期时间|主|布尔|主|事例|表达式|实体|类型|表达式
我还没有彻底了解所有这些术语的定义,但我认为它们不包括像(t.category为NULL)
,我担心。您可以将where子句转换为如下内容:
where
((... my first condition ...) and (something is NULL))
or
(not (... first condition ...) and (something2 = otherthing))
您可以从以下位置下载JPA 2.0规范最终版本:
您应该在第6.5.7节中检查示例6。
它显示了当标准API中出现
时如何使用case。
我不确定,但我认为可以在
中使用逻辑表达式(t.category为NULL
),然后如果在WHERE
子句中使用它,则可以使用块。为什么不使用and和OR将条件分解为一些条件?
where
((... my first condition ...) and (something is NULL))
or
(not (... first condition ...) and (something2 = otherthing))