Почему я получаю ноль результатов при использовании ИЛИ - PullRequest
0 голосов
/ 14 января 2020

Я использую Spring Data и JPA (плюс Hibernate и MS SQLServer) для моего проекта. У меня есть следующие классы, хранящиеся в таблицах с именами class1, class2 и class3.

Class1 {
    Long itemNo;
    Class2: obj2;
    Class3: obj3;
}

Class2 {
    int page;
}

Class3 {
    int page;
}

Обратите внимание, что в любое время один и только один из obj2 или obj3 объектов Class1 должен быть нулевым. Таким образом, при хранении в таблице class1, obj2 или obj3 должны иметь значение NULL, а другое - нет.

Вот мой запрос:

@Query("SELECT c1 FROM Class1 c1 WHERE c1.itemNo = :itemNo AND (c1.obj2.page = :page OR c1.obj3.page = :page)")
public List<Class1> getObjects(@Param("itemNo") Long itemNo, @Param("page") int page);

Проблема в том, что этот запрос всегда возвращает ноль результаты, хотя я могу видеть записи там. Что я сделал не так?

Обратите внимание, что я могу получать объекты класса 1 отдельно по следующим запросам:

@Query("SELECT c1 FROM Class1 c1 WHERE c1.itemNo = :itemNo AND c1.obj2.page = :page") 

и

@Query("SELECT c1 FROM Class1 c1 WHERE c1.itemNo = :itemNo AND c1.obj3.page = :page")
...