Как запросить столбец, значение которого является нулевым в JPA? - PullRequest
14 голосов
/ 13 июня 2011

Я использую 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, но я уверен, что в нем должны быть записи. Причина в возврате. Как запросить столбец с нулевым значением в JPA?

Спасибо.

Ответы [ 4 ]

29 голосов
/ 13 июня 2011

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

 @NamedQuery(name = "Concept.findByRefTableNull", query = "SELECT c FROM Concept c WHERE c.conceptName = :conceptName and c.refTable IS NULL"),
1 голос
/ 07 марта 2016

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

0 голосов
/ 08 января 2019

Вы можете использовать Criteri Api, например так:

private Specification<Object> nullData(String field) {
    return (root, query, cb) ->
            cb.isNull(cb.lower(root.get(field)));
}
0 голосов
/ 19 апреля 2013

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

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