Patrick J Abare II
Patrick J Abare II

Reputation: 1129

Using Generics with JPA Criteria

I'm trying to create a method that will accept a generic for building a JPA Criteria Object.

Currently, the method is

public List<Table> getTopLevelItems() throws Exception 
{
    EntityManagerAC em = JPABase.createElementEntityManager();
    Criteria<Table> criteria = 
           new Criteria<Table>(em, Table.class);
    criteria.addEquals("levelNum", "1");
    return criteria.search();    
}

What I want is something like,

public List<?> getTopLevelItems(Class clazz) throws Exception 
{
    EntityManagerAC em = JPABase.createElementEntityManager();
    Criteria<clazz> criteria = new Criteria<clazz>(em, clazz.getClass());
    criteria.addEquals("levelNum", "1");
    return criteria.search();    
}

Is this possible using java generics?

Upvotes: 0

Views: 449

Answers (1)

meskobalazs
meskobalazs

Reputation: 16041

It should be possible somehow like this:

public <T> List<T> getTopLevelItems(Class<T> clazz) throws Exception 
{
    EntityManager em = JPABase.createElementEntityManager();
    Criteria<T> criteria = new Criteria(em, clazz.getClass());
    criteria.addEquals("levelNum", "1");
    return criteria.search();    
}

Upvotes: 2

Related Questions