0

抽象クラスで を使用して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();
    }
}

getCriteriaBuilder()これはJPA 2.0で機能しますが、サーバーがJPA 1.0に制限されていることを発見しました。createQuery(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 に答える