考虑代码
public List<Product> listProducts(){
HibernateCallback callBack=new HibernateCallback(){
public Object doInHibernate(Session session){
Query query=session.createQuery("from Product");
return query.list();
}
};
return (List<Product>)hibernateTemplate.execute(callBack);
}
上面的代码有什么问题吗?在eclipse Helios中,它显示以下错误:
The type new HibernateCallback(){} must implement the inherited abstract method HibernateCallback.doInHibernate(Session)
那么实现doInHibernate()
为什么会出现上述错误呢?
确保Session
是org.hibernate.Session
,而不是其他内容(例如org.hibernate.classic.Session
)。
org.hibernate.Session
和org.hibernate.classic.Session
对特别棘手——由于后一个接口扩展了前一个接口,这种意外错误不会引起其他问题,也不容易被注意到。