在抽象类中使用EntityManager
,我试图创建一个函数,该函数从实体类返回表中所有结果的列表。每个表都有自己的持久性类,该类继承自抽象类。到目前为止,我有:
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
...
public List<T> findAll() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
}
}
这适用于JPA 2.0,但我刚刚发现我的服务器仅限于JPA 1.0,它不支持getCriteriaBuilder()
或createQuery(CriteriaQuery cq)
有没有一种方法可以重新考虑我的代码,用JPA 1.0中存在的机制做相对相同的事情?
您可以使用以下方法:
public List<T> findAll() {
return (List<T>) getEntityManager().createQuery(
"select e from " + entityClass.getSimpleName() + " e")
.getResultList();
}
请注意,如果重写逻辑实体名称(@Entity(name = ...)
),它将不起作用,但在实践中这种情况并不常见。