gpt4 book ai didi

hibernate - Hibernate(或EntityManager?)添加“where 0 = 1”进行查询

转载 作者:行者123 更新时间:2023-12-03 08:08:45 25 4
gpt4 key购买 nike

我正在使用JPA EntityManager + Hiberate,其中出现了一个神秘的where子句。 Hibernate的调试基本上显示:

select /* bunch of columns */
from some_table
where /* several filters */
and 0=1


运行 javax.persistence.Query.getResultList时会发生这种情况。 Query在where子句中有一个 Predicates数组,但是请放心 0 = 1不是其中之一。

我找不到在查询中包含 0=1部分的可能原因。有任何想法吗?我会先搜索答案,但搜索引擎会忽略 =

最佳答案

这就是将析取关系转换为SQL的方式。请参见javadoc for disjunction()


创建一个析取(零个析取)。析取值为零的析取是错误的。


因此,当创建空析取符时,它仅包含子句1 = 0(false)。将其他谓词添加到析取关系时,它们仅添加到以or分隔的初始(假)谓词中:

where 1 = 0 or ...


如果使用连词,它将被转换为

where 1 = 1 and ...

关于hibernate - Hibernate(或EntityManager?)添加“where 0 = 1”进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com