She*_*ari 9 java mysql orm jpa
我们有以下JPQL:
Select distinct sys.ipAddress from SystemLog sys where sys.ipAddress is not null and sys.ipAddress is not empty
Run Code Online (Sandbox Code Playgroud)
这会产生以下mysql 声明.
select
distinct systemlog0_.ipAddress as col_0_0_
from
SystemLog systemlog0_
where
(
systemlog0_.ipAddress is not null
)
and (
exists (
select
systemlog0_.id
from
SystemLog systemlog0_
)
)
Run Code Online (Sandbox Code Playgroud)
这显然不起作用并返回空字符串而不是省略它.但是,我正在寻找生成这样的东西:
select distinct ipAddress from SystemLog where ipAddress is not null and ipAddress <> '';
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚为什么我们的jpa查询不能生成像这样的类似的东西.有任何想法吗?
Pas*_*ent 12
我认为您滥用IS [NOT] EMPTY它是用于检查集合关联路径是否解析为空集合或至少有一个值.从JPA规范:
4.6.11空集合比较表达式
在 empty_collection_comparison_expression中使用比较运算符IS EMPTY的语法 如下:
Run Code Online (Sandbox Code Playgroud)collection_valued_path_expression IS [NOT] EMPTY此表达式测试由集合值路径表达式指定的集合是否为空(即,没有元素).
例:
Run Code Online (Sandbox Code Playgroud)SELECT o FROM Order o WHERE o.lineItems IS EMPTY如果空集合比较表达式中的集合值路径表达式的值未知,则空比较表达式的值是未知的.
在我看来,你应该只使用<>比较运算符:
select distinct sys.ipAddress
from SystemLog sys
where sys.ipAddress is not null
and sys.ipAddress <> ''
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11910 次 |
| 最近记录: |