Gra*_*Lay 4 java jpa criteria-api
JPA 2.0提供了一种使用JPQL表达式TYPE按子类进行过滤的方法,例如:
SELECT e
FROM entity e
WHERE TYPE(e) = :entityType
Run Code Online (Sandbox Code Playgroud)
其中参数entityType是鉴别器列的值.
考虑到鉴别器列似乎不受限制,建议使用JPA标准构建器实现相同的方法是什么?
我正在使用JPA 2.1,到目前为止唯一的解决方案是将鉴别器列映射为Java实体中的只读字段,但我不确定这是否是受支持的功能.
常见查询的示例在这里
例:
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();
Run Code Online (Sandbox Code Playgroud)
您可以使用此处记录的Path 类型方法:
Predicate p = cb.equal(e.type(), cb.literal(Entity.class));
Run Code Online (Sandbox Code Playgroud)