当前位置: 首页 > 知识库问答 >
问题:

没有“javax”类型的合格bean。坚持不懈EntityManager’可用:

融渊
2023-03-14

我在启动我的web应用程序时遇到了这个错误,我真的不知道问题出在哪里,全速:

组织。springframework。豆。工厂UnsatisfiedPendencyException:创建名为“usuarioController”的bean时出错,该名称在文件[C:\Users\Carlos\eclipsejee workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\RedSocial\WEB-INF\classes\unce\cum\mydai\RedSocial\controller\usuarioController.class]中定义:通过构造函数参数0表示的未满足的依赖关系;嵌套的异常是org。springframework。豆。工厂UnsatifiedPendencyException:创建名为“usuarioServiceImpl”的bean时出错:通过方法“setUsuarioDAO”参数0表示的未满足的依赖关系;嵌套的异常是org。springframework。豆。工厂UnsatifiedPendencyException:创建名为“UsuariodAimpl”的bean时出错,该名称在文件[C:\Users\Carlos\eclipsejee workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\RedSocial\WEB-INF\classes\une\cum\mydai\RedSocial\dao\usuariodAimpl.class]:通过构造函数参数0表示的未满足的依赖关系;嵌套的异常是org。springframework。豆。工厂NoSuchBeanDefinitionException:没有“javax”类型的合格bean。坚持不懈EntityManager可用:至少需要1个符合autowire候选资格的bean。依赖项注释:{}

这些是类:

常用控制器

package es.unex.cum.mydai.redsocial.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import es.unex.cum.mydai.redsocial.services.UsuarioService;
import es.unex.cum.mydai.redsocial.vo.UsuarioVO;

@Controller
public class UsuarioController {
    private final UsuarioService usuarioService;

    @Autowired
    public UsuarioController(UsuarioService usuarioService) {
        this.usuarioService = usuarioService;
    }

    @RequestMapping(value = "/registro", method = RequestMethod.GET)
    public String registro(ModelMap model) {
        UsuarioVO usuario = new UsuarioVO();
        model.put("usuario", usuario);
        return "registro";
    }
}

日常服务

package es.unex.cum.mydai.redsocial.services;

import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import es.unex.cum.mydai.redsocial.dao.UsuarioDAO;
import es.unex.cum.mydai.redsocial.vo.UsuarioVO;

@Component
public class UsuarioServiceImpl implements UsuarioService {

    private UsuarioDAO usuarioDAO;

    public UsuarioServiceImpl() {}



    public UsuarioDAO getUsuarioDAO() {
        return usuarioDAO;
    }


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



    public UsuarioVO insertarUsuario(UsuarioVO usuario) {
        return this.usuarioDAO.create(usuario);
    }

    public UsuarioVO findbyId(Long id) {
        return this.usuarioDAO.read(id);
    }

    public UsuarioVO updateUsuario(UsuarioVO usuario) {
        return this.usuarioDAO.update(usuario);
    }

    public void borrarUsuario(UsuarioVO usuario) {
        this.usuarioDAO.delete(usuario);

    }

    public Set<UsuarioVO> findbyName(String name) {
        return this.usuarioDAO.findByName(name);
    }

    public UsuarioVO login(String username) {
        return this.usuarioDAO.login(username);
    }

}

往常DAOImpl

package es.unex.cum.mydai.redsocial.dao;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.Table;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import es.unex.cum.mydai.redsocial.vo.UsuarioVO;

@Component
@Transactional
public class UsuarioDAOImpl implements UsuarioDAO {
    @PersistenceContext
    protected EntityManager entityManager;

    public UsuarioDAOImpl(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    public UsuarioVO create(UsuarioVO usuario) {
        this.entityManager.persist(usuario);
        return usuario;
    }

    public UsuarioVO read(Long id) {
        return this.entityManager.find(UsuarioVO.class, id);
    }

    public UsuarioVO update(UsuarioVO usuario) {
        this.entityManager.merge(usuario);
        return usuario;
    }

    public void delete(UsuarioVO usuario) {
        usuario = this.entityManager.merge(usuario);
        this.entityManager.remove(usuario);
    }

    @SuppressWarnings("unchecked")
    public Set<UsuarioVO> findByName(String name) {
        Query query = entityManager.createQuery(
                "SELECT * FROM "+UsuarioVO.class.getAnnotation(Table.class).name()+" WHERE name LIKE ?1 OR username LIKE ?2", UsuarioVO.class);
        query.setParameter(1, "%"+name+"%");
        query.setParameter(2, "%"+name+"%");
        return new HashSet<UsuarioVO>(query.getResultList());
    }

    public UsuarioVO login(String username) {
        Query query = entityManager.createQuery(
                "SELECT * FRO "+UsuarioVO.class.getAnnotation(Table.class).name()+" WHERE username = ?1", UsuarioVO.class);
        query.setParameter(1, username);
        return (UsuarioVO) query.getSingleResult();
    }

}

共有1个答案

卫宏硕
2023-03-14

信息非常明确:

@PersistenceContext
protected EntityManager entityManager;

您正在自动连接EntityManager,而无需在任何地方定义它。您需要一个带有@Configuration注释的类。

 类似资料: