Я довольно новичок в 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 () методом .Я не могу понять, почему я ...