Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
6
respuestas

Nuevo error

me aparecio un error al terminar de aplicar la migracionn v6, pero creo no tiene nada que ver el error de la migracion con esto que me aparece, no comprendo que fallo o que paso: espero porfavor me puedan auxiliar Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad La redaccion completa del error es: Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'secutiryFilter': Unsatisfied dependency expressed through field 'usuarioRepository': Error creating bean with name 'usuarioRepository' defined in med.voil.api.domain.usuarios.UsuarioRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager'

En la clase security filter tengo: @Component public class SecurityFilter extends OncePerRequestFilter {

@Autowired
private TokenService tokenService;
@Autowired
private UsuarioRepository usuarioRepository;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
    // Obtener el token del header
    var authHeader = request.getHeader("Authorization");
    if (authHeader != null) {
        var token = authHeader.replace("Bearer ", "");
        var nombreUsuario = tokenService.getSubject(token); // extract username
        if (nombreUsuario != null) {
            // Token valido
            var usuario = usuarioRepository.findByLogin(nombreUsuario);
            var authentication = new UsernamePasswordAuthenticationToken(usuario, null,
                    usuario.getAuthorities()); // Forzamos un inicio de sesion
            SecurityContextHolder.getContext().setAuthentication(authentication);
        }
    }
    filterChain.doFilter(request, response);
}

}

y en la Interfaz UsuarioRepository tengo:

import org.springframework.security.core.userdetails.UserDetails;

public interface UsuarioRepository extends JpaRepository<Usuario, Long> { UserDetails findByLogin(String username); }

En el archivo application.properties tengo:

spring.datasource.url=jdbc:mysql://localhost/vollmed_api spring.datasource.username=root spring.datasource.password=moster562

spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true

server.error.include-stacktrace = never

api.security.secret=${JWT_SECRET:123456}

6 respuestas

Hola,

Sí, parece un problema con la creación del bean 'usuarioRepository'. El error indica que no puede resolver la referencia al bean 'jpaSharedEM_entityManagerFactory' mientras se configura la propiedad 'entityManager'. Esto puede ser causado por varias razones.

  1. Asegúrate de que la anotación @EnableJpaRepositories esté presente en tu clase de configuración principal (la que contiene @SpringBootApplication). Esta anotación es necesaria para que Spring Boot pueda escanear los repositorios.

  2. Verifica que tu archivo 'application.properties' esté correctamente configurado. Asegúrate de que las propiedades de la fuente de datos (url, nombre de usuario, contraseña) sean correctas.

  3. En tu clase 'SecurityFilter', estás inyectando 'UsuarioRepository' con @Autowired. Asegúrate de que 'UsuarioRepository' esté anotado con @Repository y que esté en un paquete que pueda ser escaneado por Spring Boot.

  4. Asegúrate de que la entidad 'Usuario' esté correctamente mapeada y que esté anotada con @Entity.

Por ejemplo, tu clase 'UsuarioRepository' debería verse algo como esto:

@Repository
public interface UsuarioRepository extends JpaRepository<Usuario, Long> {
    UserDetails findByLogin(String username);
}

Y tu entidad 'Usuario' algo como esto:

@Entity
public class Usuario {
    // campos y métodos aquí
}

Si ninguno de estos funciona, te recomendaría que revises tu configuración de Spring Boot y JPA.

Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Tengo todo lo que en el curso me manda... esta raro incluso mi proyecto tiene todas las anotaciones en las clases e interfaces que me proporciono el curso señorita y sigue apareciendo el mismo codigo, ya verifique dependencias, versiones y creo el error esta en como se aplico el metodo o interfaz UsuarioRepository ... Se ve que esta bueno el proyecto ojala me puedan ayudar para basarme en este y tenerlo completo, muchas gracias, les deo el repo de mi codigo https://github.com/Comando562/PracticaSpringB/tree/master/Practica/api/api/src/main/java/med/voil/api

solución!

Ya encontre el error hace dias, por si les llegase a pasar este error, no tiene nada que ver con los Context o Anotaciones, ni con el EntityManager, si no que tenia un problema Flayway al querer sobre escribir las Migrations, asi que no basto con eliminar la tabla Flyway de la DB si no que elimine toda la DB y ejecute spring y eso me soluciono todo, Conforme a la DB al ejecutarse nuevamente Spring genera nuevamente la DB sin problema alguno , por si les llegase a pasar este error.

También puedes hacer uso del código que nos proporcionaron por si una migración salía mal:

delete from flyway_schema_history where success = 0;

@Leonardo, que clase de plugins tienes instalado en intellij para que se vea asi con colores la consola?

El pulgin que uso se llama Atom Material Icons, no sé si este disponible para la version gratuita pero revísalo.