Я использую 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")