1
respuesta

Error al filtrar las categorias existentes

He estado desarrollando el ejecicio junto al docente en cada leccion y todo bien, hasta que llegue a la primera clase de INNER JOIN, donde estoy obteniendo un error en la funcion filter filter(cat -> cat.getId().equals(categoriaId)), no reconoce la funcion equals, dejo el codigo que tengo para mayor detalle:

    public List<Categoria> listarConProductos() {
        List<Categoria> categorias = new ArrayList<>();

        try {
            final PreparedStatement statement = con.prepareStatement(
                "SELECT c.id, c.nombre, p.id, p.nombre, p.cantidad FROM categoria c INNER JOIN producto p ON c.id = p.categoria_id"
            );

            try(statement) {
                final ResultSet resultSet = statement.executeQuery();

                try(resultSet) {
                    while (resultSet.next()) {
                        int id = resultSet.getInt("id");
                        String nombre = resultSet.getString("nombre");

                        var categoria = categorias
                                .stream()
                                .filter(cate -> cate.getId().equals(id)) // El error aquí
                                .findAny()
                                .orElseGet(() ->  {
                                    Categoria cat = new Categoria(id, nombre);

                                    categorias.add(cat);

                                    return cat;
                                });
                    }
                }
            }

            return categorias;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
1 respuesta

¡Hola Jhon!

El error que estás obteniendo se debe a que estás comparando un entero (id) con un objeto (categoriaId) en la línea filter(cat -> cat.getId().equals(categoriaId)). Para solucionarlo, debes asegurarte de que categoriaId sea del mismo tipo que el id de la categoría.

Si categoriaId es un entero, simplemente cambia la línea a filter(cat -> cat.getId() == categoriaId) y debería funcionar correctamente.

Espero que esto te ayude a solucionar el problema. ¡Buenos estudios!

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