Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
6
respuestas

Problemas al realizar el listado - Jsons Vacíos

Tras la realización de los pasos realizados por el profesor, hice la request por Insomnia pero me generaba Jsons vacíos. Intente consultar a GPT para ver cual era mi error. A la conclusión que pude llegar es que Hibernate no estaba identificando bien las anotaciones de lombok: @Getter @Setter @NoArgsConstructor @AllArgsConstructor También intente con @Data, pero no llegaba a buen puerto. Finalmente definí explícitamente lo que las anotaciones intentaban hacer, es decir, todos los Getters y Setters, un constructor vacío y un constructor con todos los atributos, esto obviamente con ambas clases (Medico y Direccion). Finalmente consulte a GPT de por qué sucedia esto, y me mencionó temas sobre versiones y que debería tener todo actualizado pero yo descargue las dependencias del propio Spring Initializr. Me sugirió algo como esto:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version> <!-- Asegúrate de usar una versión reciente -->
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <annotationProcessorPaths>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.28</version> <!-- Verifica la versión de Lombok -->
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>

Pero no lo hago porque quiero aclarar mi duda primero y porque sé que GPT no esta actualizado del todo. Ahora mismo tengo mi pom.xml de la siguiente manera:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.4.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>med.vol</groupId>
    <artifactId>api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>api</name>
    <description>API REST para VOL Clinica</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-mysql</artifactId>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Agradeceria su ayuda.

6 respuestas

Hola Alexander, espero que estés bien

Tengo algunas preguntas:

  1. ¿Cuál es el error que aparece en Insomnia y Intellij?
  2. Al introducir manualmente las x sin usar el lombok resuelto?
  3. ¿Has añadido Lombok en la configuración de tu IDE, por ejemplo en Intellij? Porque algunas veces agregar la dependencia spring no es suficiente, es necesario agregarla tanto en pom.xml como en las configuraciones de su IDE.

Saludos y buenos estudios

Hola, Brenda, gracias por tu atención.

  1. En si el error era que las llaves que devolvia el request estaban vacias en Insomnia. En IntelliJ no se reflejaba el error o, al menos, yo no lo noté.
  2. No entiendo la pregunta.
  3. Lo voy a intentar, capaz eso me faltaba.

Gracias :D

Hola Alexander,

Perdón por el error de digitación, la segunda pregunta era saber si después de introducir manualmente métodos como @Getter y @Setter en su clase Java resolvió el problema?

Otra pregunta que se me ocurrió: ¿podría proporcionar el código java de tus clases de tipo Controller?

Saludos

Hola Alexander No se si ya lo resolviste pero en resumen son problemas con el Lombok, yo lo corregí incluyendo todo manualmente, constructor vacío, constructor con argumentos, getters y así funcionó, lo hice para avanzar con el curso y pendiente tengo la revisión y actualización para probarlo con lombok hasta que funcione, si logras hacer funcionar el lombok correctamente me cuentas como lo hiciste, yo haré lo mismo

He aqui el problema explicito: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Y mi clase de usuario ya contiene las anotaciones de getter y setter:

package com.alexoo.foro_hub.foro_hub.domain.usuario;

import jakarta.persistence.*;
import lombok.*;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;
import java.util.List;

@Entity(name = "Usuario")
@Table(name = "usuario")
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@EqualsAndHashCode(of="id")
public class Usuario implements UserDetails {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String nombre;
    private String email;
    private String contrasenha;
    private Boolean activo;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "perfil_id")
    private Perfil perfil;

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return List.of(new SimpleGrantedAuthority("ROLE_USER"));
    }

    @Override
    public String getPassword() {
        return contrasenha;
    }

    public String getUsername() {
        return email;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }
}

Y las configuraciones con respecto a Lombok en IntelliJ ya estan hechas y tambien lo de instalar su plugin, o almenos eso creo: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Hola ruben gracias por tan valiosa información, tambien tenia el mismo problema y con tu aporte logre hacer que funcionara