API критериев: query.from возвращает только ноль - PullRequest
0 голосов
/ 28 июля 2011

Я довольно новичок в Criteria API, фактически я просто перенес наш последний проект на JBoss 6 и JPA 2.0 только для Criteria API.

Теперь я пытаюсь получить самый простой запросработает, но как-то безуспешно:

Без Criteria API это работает без проблем (Msv - мой класс сущностей):

Msv someMsv = manager.find(Msv.class, 1234L);
System.out.println(someMsv);

Однако критерии не дают мне никаких результатов из БД:

CriteriaBuilder builder = manager.getCriteriaBuilder();
CriteriaQuery<Msv> criteriaQuery = builder.createQuery(Msv.class);
Root<Msv> from = criteriaQuery.from(Msv.class);
// this returns null! /\
Path<Msv> pk = from.get("PK_MSV_NR");
Expression<Boolean> exp = builder.equal(pk, 1234L);
CriteriaQuery<Msv> select = criteriaQuery.select(from).where(exp);
[...]

При выполнении второго фрагмента кода я получаю исключение NullPointerException в строке 5 (путь pk ...), следовательно, вышеупомянутый cireriaQuery.from возвращает значение null.

Я пропустилчто-то важное, или в чем здесь проблема?Первый фрагмент может извлечь правильную запись из БД и выполнить ее, так что я решил, что это не проблема с моей конфигурацией персистентности, а скорее с моим кодом API Criteria.Но тот, который я вытащил из учебника, в основном построчно ...

Техника: я использую hibernate-3.6.6, hibernate-jpa-2.0-cr, jboss-as-6.0.0и oracle11.

РЕДАКТИРОВАТЬ: Изучил это еще несколько и обнаружил следующее: это на самом деле не critQuery.from (...) , который производитноль.NullPointerException не генерируется, потому что .get () вызывается по пустому значению, но фактически выбрасывается / in .get () методом .Я не могу понять, почему я ...

1 Ответ

0 голосов
/ 29 июля 2011

Argh, я наконец-то узнал, что я сделал не так.Поскольку я позволил eclipse генерировать классы сущностей для себя, я не уделял достаточного внимания номенклатуре их полей.

Поле, которое я искал, в базе данных называется 'PK_MSV_NR', однако eclipse назвало его 'pkMsvNr 'в классе сущностей.Отсюда и проблема.

Тем не менее, я думаю, что это довольно странное поведение - выбрасывать исключение NullPointerException.Здесь действительно не так много пустых указаний ...

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