我有一個抽象的DAO類,它使用參數化類型E
(實體)和K
(主鍵)。在每個實體中,我都有一個@NamedQuery
。我想動態調用這個命名查詢而不知道它的確切名稱和參數名稱。抽象抽象JPA中的命名查詢DAO
作爲一個例子,假設下面的實體City
@Entity(name="CITY")
@NamedQuery(
name="findCityByname",
query="FROM CITY c WHERE name = :CityName"
)
public class City {
// ...
}
這CityDao
public class CityDao extends AbstractDao<City, Long> {
public CityDao() {
super(City.class);
}
}
我應該如何實現findByName()
方法AbstractDao
,這樣我不需要知道確切的名稱和參數名稱?
public abstract class AbstractDao<E, K> implements Dao<E, K> {
@PersistenceContext
protected EntityManager entityManager;
protected Class<E> entityClass;
protected AbstractDao(Class<E> entityClass) {
this.entityClass = entityClass;
}
@Override
public E findByName(String name) {
try {
return (E) entityManager
.createNamedQuery("findCityByName")
.setParameter("CityName", name)
.getSingleResult();
} catch(Exception e) {
return null;
}
}
// ...
}
它敲打概念「我想住的理念排序斑點的... – 2011-02-03 14:44:53