我正在使用Spring 3.2和Hibernate 4.我正在用dao编写持久层访问。这是dao接口代码:
public interface AbstractDao<E, I extends Serializable> {
public E findById(I id);
public void saveOrUpdate(E e);
public void delete(E e);
public List<E> findByCriteria(Criterion criterion);
}
在我编写了实现接口的抽象类之后:
public abstract class AbstractDaoImpl<E, I extends Serializable> implements AbstractDao<E,I> {
private Class<E> entityClass;
protected AbstractDaoImpl(Class<E> entityClass) {
this.entityClass = entityClass;
}
@Autowired
private SessionFactory sessionFactory;
public Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
@Override
public E findById(I id) {
return (E) getCurrentSession().get(entityClass, id);
}
@Override
public void saveOrUpdate(E e) {
getCurrentSession().saveOrUpdate(e);
}
@Override
public void delete(E e) {
getCurrentSession().delete(e);
}
@Override
public List<E> findByCriteria(Criterion criterion) {
Criteria criteria = getCurrentSession().createCriteria(entityClass);
criteria.add(criterion);
return criteria.list();
}
}
我在抽象类中实现的所有方法都遇到了一些编译错误:findById(I id)
,saveOrUpdate(E e)
,delete(E e)
,findByCriteria(Criterion criterion)
。
错误消息是:
此行有多个标记
- 实现com.startup.app.models.hibernate.dao.AbstractDao.findById
- 类型AbstractDaoImpl的方法findById(I)必须覆盖超类 方法
有什么不对,我不明白。谢谢。
答案 0 :(得分:1)
确保您至少使用 Java 1.6 ,以便在这种情况下使用@Override
。
在Java 1.5中,@Override
只能应用于覆盖超类方法的方法。