我有一个抽象的DAO类,它使用参数化类型E(实体)和K(主键).在每个实体我都有@NamedQuery.我想在不知道其确切名称和参数名称的情况下动态调用此命名查询.
例如,想象下面的实体 City
@Entity(name="CITY")
@NamedQuery(
name="findCityByname",
query="FROM CITY c WHERE name = :CityName"
)
public class City {
// ...
}
Run Code Online (Sandbox Code Playgroud)
还有这个 CityDao
public class CityDao extends AbstractDao<City, Long> {
public CityDao() {
super(City.class);
}
}
Run Code Online (Sandbox Code Playgroud)
我应该如何实现该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 …Run Code Online (Sandbox Code Playgroud)