2015-10-19 5 views
1

OpenJPA добавляет «1 <> 1» к моему предложению WHERE. Любая идея почему? Я перечислил некоторые примеры кода & Sql нижеOpenJPA добавление 1 <> 1 к предложению WHERE

//Criteria Query 
_PredicateList.add(
    _CriteriaBuilder.equal(
      _RootClass.get(Test_.Data) 
      ,"XXX"                      ) 
     );  

//sql snippet that is generated 
t0.Data= 'XXX' AND 1 <> 1 

ответ

1

Состояние вы строите не имеет, вероятно, нет шансов, вычисляемая истинного и OpenJPA обнаруживает его в момент установки запроса. Это может быть вызвано сопоставлением несовместимых типов (в вашем случае) или по ряду причин в других случаях (т. Е. Условие «является нулевым» для столбца, отличного от нуля, сравнение с константой строки, большей, чем максимальная длина, разрешенная для этого столбец и т. д.).

Почему такое странное состояние? Вероятно, дать подсказку разработчику, что в запросе есть логическая ошибка (и не сбой с исключением). Менее вероятно, по соображениям производительности. Кроме того, не все диалекты SQL поддерживают логические литералы.