春季项目出错,休眠

Posted

技术标签:

【中文标题】春季项目出错,休眠【英文标题】:error with project in spring, hibernate 【发布时间】:2013-08-14 17:16:24 【问题描述】:

这是我得到的错误:

严重:StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException:创建名为“usuarioControlador”的bean时出错:注入自动装配的依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有 com.blah.base.database.DAO.UsuarioDAO com.blah.base.controlador.UsuarioControlador.usuarioDAO;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException:创建文件 [C:\Users\Owner\workspaceSpring.metadata.plugins\org.eclipse.wst.server.core\tmp3\ 中定义的名称为“UsuarioDAO”的 bean 时出错wtpwebapps\base\WEB-INF\classes\com\yavale\base\database\hibernetDAO\UsuarioHibernetDao.class]:通过构造函数参数表示的不满足依赖关系,索引为 0 类型 [org.hibernate.SessionFactory]: : 没有限定类型的 bean [org.hibernate.SessionFactory] ​​找到依赖项:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory);嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为 [org.hibernate.SessionFactory] ​​的合格 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory)

这是我的 UsuarioControlador(控制器):

@Controller
@RequestMapping("/")
public class UsuarioControlador 

private UsuarioDAO usuarioDAO;
@Autowired 
public void setUsuarioDAO(UsuarioDAO usuarioDAO) 
    this.usuarioDAO = usuarioDAO;


@RequestMapping(method = RequestMethod.GET)
public String list(Model model) 
    List<Usuario> usuarios = usuarioDAO.listarUsuarios();
    model.addAttribute("usuarios", usuarios);

    return "index";


这是 UsuarioDAO:

public interface UsuarioDAO 

void insertarUsuario(Usuario usuario);
void modificarUsuario(Usuario usuario);
List<Usuario> listarUsuarios();
Usuario buscarUsuario(String idUsuario);
void eliminarUsuario(Usuario usuario);


这是实现 UsuarioDAO 的类:

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Service;

@Service(value="UsuarioDAO")
public class UsuarioHibernetDao extends HibernateDaoSupport implements UsuarioDAO

@Autowired
public UsuarioHibernetDao(@Qualifier("mySessionFactory") SessionFactory 
        sessionFactory) 
    this.setSessionFactory(sessionFactory);



public void insertarUsuario(Usuario usuario) 
    this.getHibernateTemplate().save(usuario);


public void modificarUsuario(Usuario usuario) 
    this.getHibernateTemplate().update(usuario);


public List<Usuario> listarUsuarios() 
    return this.getHibernateTemplate().find("from Usuario");


public Usuario buscarUsuario(String idUsuario) 
    return this.getHibernateTemplate().load(Usuario.class, idUsuario);


public void eliminarUsuario(Usuario usuario) 
    this.getHibernateTemplate().delete(usuario);



这是我的 servlet-context.xml:https://dl.dropboxusercontent.com/u/31349296/servlet-context.xml

我是 spring 新手,所以我完全迷失了这个。

编辑:这是完整的堆栈跟踪:https://dl.dropboxusercontent.com/u/31349296/log.txt

编辑2

【问题讨论】:

请发布完整的堆栈跟踪 我已经编辑了问题 【参考方案1】:

您在限定符注释中使用了错误的标识符。 bean id 是“mySessionFactory”,但您提供了“sessionFactory”。此外,请确保内容组件扫描正在扫描正确的包。

更新:

另一个错误可能与休眠会话的导入有关。你应该使用org.hibernate.Session 而不是org.hibernate.classic.Session

【讨论】:

对不起,你几乎是对的。现在我有其他错误。我已经更改了dl.dropboxusercontent.com/u/31349296/log.txt中的内容 我已经更新了答案。看起来我的第一个答案已经解决了你的问题,这就是你得到这个的原因。所以,请接受我的回答 我已经添加了我的导入。我正在使用 org.hibernate.SessionFactory;。我应该打开一个新问题来解决我的新问题吗?我仍然有“春季项目错误,休眠”:s 我指的不是 SessionFactory。我说的是休眠会话。检查 Session 的导入 引起:org.springframework.beans.factory.BeanCreationException:在 ServletContext 资源 [/WEB-INF/servlet-context.xml] 中定义名称为“mySessionFactory”的 bean 创建错误:调用 init 方法失败的;嵌套异常是 java.lang.NoClassDefFoundError: org/dom4j/DocumentException

以上是关于春季项目出错,休眠的主要内容,如果未能解决你的问题,请参考以下文章

休眠/春季:getHibernateTemplate().save(...) 冻结/挂起

TransactionRequiredException:没有事务正在进行春季批处理作业和休眠

春季启动和休眠:更新条目为空的所有列的行

春季启动中的休眠统计信息不起作用?

第一个休眠程序出错

休眠的动态类