Каков способ JPA CriteriaBuilder для фильтрации по подклассам?



JPA 2.0 предоставляет средство фильтрации по подклассу с использованием типа выражений JPQL, например:



SELECT e
FROM entity e
WHERE TYPE(e) = :entityType


Где параметр entityType будет значением столбца дискриминатора.



Каков рекомендуемый способ достижения того же результата с помощью конструктора критериев JPA, учитывая, что столбец дискриминатора, по-видимому, недоступен?



Я использую JPA 2.1, и пока единственное решение, которое кажется адекватным, - это отображение столбца дискриминатора в поле только для чтения внутри сущности Java, но я не уверен, что это поддерживаемая функция.

637   2  

2 ответов:

Примеры распространенных запросов приведены здесь

Пример:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
Root e = cq.from(Entity.class);
cq.where(cb.equal(e.type(), entityType));
Query query = em.createQuery(cq);
List<Entity> result = query.getResultList();

Вы можете использовать метод типа пути , как описано здесь :

Predicate p = cb.equal(e.type(), cb.literal(Entity.class));

Comments

    Ничего не найдено.