在抽象类中使用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中存在的机制做相对相同的事情?
答案 0 :(得分:3)
您可以使用以下方法:
public List<T> findAll() {
return (List<T>) getEntityManager().createQuery(
"select e from " + entityClass.getSimpleName() + " e")
.getResultList();
}
请注意,如果您覆盖逻辑实体名称(@Entity(name = ...)
),它将无法工作,但实际上并不常见。