Подтвердить что ты не робот

Как запросить столбец, значение которого равно null в JPA?

Я использую JPA namedQuery для выбора данных из БД.

 @NamedQuery(name = "Concept.findByRefTableNull", query = "SELECT c FROM Concept c WHERE c.conceptName = :conceptName and c.refTable = :refTable"),

///
 List<Concept> attributeList 
                = em.createNamedQuery("Concept.findByRefTableNull")
                .setParameter("conceptName", "student").
                setParameter("refTable", null).
                getResultList();

        System.out.println(attributeList.size()); //return 0

Размер списка равен 0, но я уверен, что он должен иметь записи. Причина - refTable. Как запросить столбец, значение которого равно null в JPA?

Спасибо.

4b9b3361

Ответ 1

Просто измените свой запрос на

 @NamedQuery(name = "Concept.findByRefTableNull", query = "SELECT c FROM Concept c WHERE c.conceptName = :conceptName and c.refTable IS NULL"),

Ответ 2

я бы избегал запросов вообще - это в значительной степени отрицает чувство упорства-абстракции. Создайте динамические запросы с помощью API критериев, это обеспечит переносимость. И вы сможете в какой-то степени переключать базы данных без особых проблем.

Ответ 3

Я не уверен, что это только функция данных JPA, но я просто пишу метод в интерфейсе репозитория формы findByFieldName (поле Type), где fieldName - это имя столбца, в котором мне нужно выполнить null проверка. Затем я использую этот метод и передаю значение null в качестве параметра.