0

在抽象类中使用 an 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 但我刚刚发现我的服务器仅限于不支持getCriteriaBuilder()或不支持的 JPA 1.0createQuery(CriteriaQuery cq)

有没有一种方法可以重构我的代码以使用 JPA 1.0 中存在的机制做相对相同的事情?

4

1 回答 1

3

您可以使用以下方法:

public List<T> findAll() {
    return (List<T>) getEntityManager().createQuery(
        "select e from " + entityClass.getSimpleName() + " e")
        .getResultList();
}

请注意,如果您覆盖逻辑实体名称 ( @Entity(name = ...)),它将不起作用,但在实践中并不常见。

于 2012-07-09T17:12:24.647 回答