我正在使用 Spring 专门为使用 Hibernate 的 DAO 类连接依赖项,但我遇到了一个让我感到困惑的异常:
$Proxy58 无法转换为 UserDao
我的DAO配置如下:
<bean id="userDao" class="com.domain.app.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
我有一个接口、抽象基类和一个最终实现,如下所示。
界面:
public interface Dao {
public void save(Object object);
public Object load(long id);
public void delete(Object object);
public void setSessionFactory(SessionFactory sessionFactory);
}
抽象基类:
public abstract class BaseDao implements Dao {
private SessionFactory sessionFactory;
@Transactional
@Override
public void save(Object object) {
PersistentEntity obj = (PersistentEntity) object;
currentSession().saveOrUpdate(obj);
}
@Transactional
@Override
public abstract Object load(long id);
@Transactional
@Override
public void delete(Object object) {
// TODO: this method!
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session currentSession() {
return sessionFactory.getCurrentSession();
}
}
执行:
public class UserDao extends BaseDao implements Dao {
@Transactional(readOnly=true)
@Override
public Object load(long id) {
Object user = currentSession().get(User.class, id);
return user;
}
}
以下抛出上述异常:
UserDao dao = (UserDao) context.getBean("userDao");
但是,这不会引发异常:
Dao dao = (Dao) context.getBean("userDao");
如果有人可以就为什么会发生这种异常提供任何帮助或指导,我将不胜感激。