0

だからここに私が基本的にやりたいことがあります:

@Stateless
public abstract class GeneralDao<T> {

    @PersistenceContext(unitName = "Persistence")
    EntityManager em;

    private List<T> allT;

    public List<T> getAllT(){

        TypedQuery<T> typedQuery = em.createQuery("Select t from T t",T.class);

    }

}

たとえば、このクラスを拡張したいとします。たとえば、次のように EmployeeDao を使用します。

 public class EmployeeDao extends GeneralDao<Employee>{

 }

そして、私が実行すると:

employeeDao.getAllT()

リストを取得したい。Java は getAllT メソッドの T.class を好まないと思うので、これは機能しません。

これをどのように一般化できますか?いずれかの方法?

4

1 に答える 1

1

次のように、サブクラスが特定のクラス型を返すようにするだけです。

public abstract class GeneralDao<T> {

    @PersistenceContext(unitName = "Persistence")
    EntityManager em;

    private List<T> allT;

    public List<T> getAllT(){

        TypedQuery<T> typedQuery = em.createQuery("Select t from " + getClassType().getSimpleName() + " t", getClassType());

    }

    protected abstract Class<T> getClassType();
}
于 2013-06-29T19:09:36.287 に答える