Запрос критерия Hibernate backend содержит: где (1 = 1) что это значит? - PullRequest
0 голосов
/ 20 июня 2019

Выполнение ниже строки кодов:

Criteria cri = dc.getExecutableCriteria(this.session);

            int start = (p.getCurrentPage() - 1) * p.getPageSize();
            int end = p.getPageSize();
            cri.setFirstResult(start);
            cri.setMaxResults(end);

            result = cri.list();

когда исполняется cri.list () У меня есть проверка на выполнение SQL Hibernate из журналов,

Hibernate: select * from 
( 
select this_.ID as ID175_0_, 
his_.NAME as NAME175_0_,
 this_.DESCRIPTION as DESCRIPT3_175_0_, 
 this_.VALUE as VALUE175_0_, 
 this_.STATE as STATE175_0_, 
 this_.ATTR1 as ATTR7_175_0_, 
 this_.ATTR2 as ATTR8_175_0_, 
 this_.ATTR3 as ATTR9_175_0_, 
 this_.ATTR4 as ATTR10_175_0_, 
 this_.ATTR5 as ATTR11_175_0_, 
 this_.LASTUSER as LAST12_175_0_, 
 this_.LASTTIME as LAST13_175_0_, 
 this_.POLICY as POLICY175_0_ 
 from TestDB.TestTable this_ 
  where (1=1) 
 and 
 this_.VALUE18 is null 
 order by lower(this_.NAME) asc, this_.ID desc ) where rownum <= ?

что значит, где (1 = 1) здесь означает ??

1 Ответ

0 голосов
/ 20 июня 2019

что значит где (1 = 1) здесь ??

Это то же самое, что вообще не иметь предложения WHERE. Все ряды проходят тестирование.

Вы увидите это в коде, который автоматически генерирует предложения WHERE и либо хочет всегда выводить единицу, даже если критериев нет, либо всегда начинает с такого типа критерия совпадения всех строк, а затем добавляет любые другие через AND (поэтому код не должен отслеживать, выводить ли WHERE до критерия или AND).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...