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

Unable to locate constructor for embeddable : med.voll.api.direccion.Direccion

A la hora de correrlo, realiza la actualización a la ver 2, pero después arroja este error: he seguido al pie de la letra el código.

Alguien me podría ayudar, gracias

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

3 respuestas

¡Hola Ricardo, espero que estés bien!

El error que estás experimentando indica que no se puede encontrar el constructor para la clase Direccion, que es una clase embebida. Esto puede ser causado por varias razones, como una mala configuración o un error en la implementación de la clase.

Una solución: si estás usando Lombok y Eclipse, es necesario instalar Lombok para utilizarlo en el IDE Eclipse y así puedes utilizar las anotaciones referentes a constructor vacío y con atributos, por ejemplo.

Otra solución: crear manualmente el constructor vacío y/o constructor con atributos en tu código.

Si tienes alguna otra pregunta o si necesitas más ayuda, no dudes en preguntar. ¡Espero haber ayudado y buenos estudios!

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

Hola Ricardo, un gusto saludarte.

Quizás el error que tengas se deba a que no estas implementando de forma correcta las anotaciones en el atributo adecuado y en la clase Dirección.

@Embeddable
...
public class Direccion {

    private String calle;
    private String numero;
    private String complemento;
    ...
...
public class Medico {

    ...
    @Embedded
    private Direccion direccion;

Hola Luis, gracias por la respuesta, te comparto el código tanto de la clase Direccion como de la clase Medico, creo que las anotaciones @Embeddable y @Embedded las estoy colocando correctamente, pero aún así cuando corro la aplicación sale ese error "Unable to locate constructor for embeddable : med.voll.api.direccion.Direccion"

import jakarta.persistence.Embeddable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Embeddable
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Direccion {

    private String calle;
    private String numero;
    private String complemento;
    private String distrito;
    private String ciudad;

    public Direccion(DatosDireccion direccion) {

        this.calle = direccion.calle();
        this.numero = direccion.numero();
        this.complemento = direccion.complemento();
        this.distrito = direccion.distrito();
        this.ciudad = direccion.ciudad();

    }

}
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import med.voll.api.direccion.Direccion;

@Table(name="medicos")
@Entity(name="Medico")
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Medico {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String nombre;

    private String email;

    private String telefono;

    private String documento;

    @Enumerated(EnumType.STRING)
    private Especialidad especialidad;

    @Embedded
    private Direccion direccion;

    public Medico(DatosRegistroMedico datosRegistroMedico) {
        this.nombre = datosRegistroMedico.nombre();
        this.email = datosRegistroMedico.email();
        this.telefono = datosRegistroMedico.telefono();
        this.documento = datosRegistroMedico.documento();
        this.especialidad = datosRegistroMedico.especialidad();
        this.direccion = new Direccion(datosRegistroMedico.direccion());
    }

}