我正在設置一個泛型類,它將作爲我應用程序中所有Dao類的基類,但是現在我正面臨一個錯誤。我的泛型類是這樣定義的;Dao類的泛型類
public class Dao<E> {
private final E entity;
@Autowired
SessionFactory sessionFactory;
protected Session getCurrentSession(){
return sessionFactory.getCurrentSession();
}
public Dao(E entity) {
this.entity = entity;
}
public E getEntity() {
return this.entity;
}
@Transactional
public boolean persist(E transientInstance) {
try {
sessionFactory.getCurrentSession().persist(transientInstance);
return true;
} catch (RuntimeException re) {
return false;
}
}
@Transactional
public boolean remove(E transientInstance) {
try {
sessionFactory.getCurrentSession().delete(transientInstance);
return true;
} catch (RuntimeException re) {
return false;
}
}
@SuppressWarnings("unchecked")
@Transactional
public E merge(E detachedInstance) {
try {
E result = (E) sessionFactory.getCurrentSession().merge(detachedInstance);
return result;
} catch (RuntimeException re) {
return null;
}
}
@Transactional
public E findById(int id) {
try {
E instance = (E) sessionFactory.getCurrentSession().get(E, id);
return instance;
} catch (RuntimeException re) {
return null;
}
}
@SuppressWarnings("unchecked")
@Transactional
public E findByUsername(String username) {
try {
E instance = (E) sessionFactory.getCurrentSession().createCriteria(E, username).add(Restrictions.like("login", username)).list().get(0);
return instance;
} catch (RuntimeException re) {
return null;
}
}
@SuppressWarnings("unchecked")
@Transactional
public List<E> findAll() {
try {
List<E> instance = sessionFactory.getCurrentSession().createCriteria(E).list();
return instance;
} catch (RuntimeException re) {
return null;
}
}
}
與錯誤的方法是過去三年,並由get()和個createCriteria()在他們執行(誤差爲Ë相關referente到E不能被解析爲變量)。通常,當我不使用這種基於泛型的方法時,我會使用類似'Usuario.class'的東西。
任何人都知道如何解決這個錯誤在我的泛型類(如果這種方法甚至可能)。
你還沒有告訴我們是什麼錯誤。請更新問題,至少告訴我們*錯誤信息是什麼,並在適當的情況下包含堆棧跟蹤。 – JonK
您似乎試圖將'E'作爲參數傳遞給方法。泛型不能像那樣工作。 –
我該怎麼做這項工作?有什麼辦法可以傳遞函數的期望值(正如我所說的,就像'User.class')? –