Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Ayuda Relacionando tablas

ayuda no me relaciona la tabla autores con la tabla libros ni siquier en l base de datos me crea un columna autores mando pantallazo, si me agrega canda entindad libro que mando a la base de datos pero no me guarda ni me crea la columna autoresmando pantallazos

@Entity @Table(name = "libros") public class LibroAMostrar {

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

@Column(unique = true)
private String titulo;


@OneToMany(mappedBy = "libroAMostrar", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<AutoresAMostrar> autores;


private List<String> lenguajes;


private Integer descargas;

public LibroAMostrar(){}


public LibroAMostrar(DatosLibro datosLibro){
    this.titulo=datosLibro.title();
    this.autores=datosLibro.autores().stream().map(AutoresAMostrar::new).collect(Collectors.toList());
    this.lenguajes=datosLibro.lenguajes();
    this.descargas=datosLibro.descargas();
}

public Long getId() {
    return Id;
}

public void setId(Long id) {
    Id = id;
}


public String getTitulo() {
    return titulo;
}

public void setTitulo(String titulo) {
    this.titulo = titulo;
}

public List<AutoresAMostrar> getAutores() {
    return autores;
}

public void setAutores(List<AutoresAMostrar> autores) {
    autores.forEach(e->e.setLibroAMostrar(this));
    this.autores = autores;
}

public List<String> getLenguajes() {
    return lenguajes;
}

public void setLenguajes(List<String> lenguajes) {
    this.lenguajes = lenguajes;
}

public Integer getDescargas() {
    return descargas;
}

public void setDescargas(Integer descargas) {
    this.descargas = descargas;
}



@Override
public String toString() {
    return  "*********************************************" + '\n' +
            "titulo = " + titulo + '\n' +
            "Autores = " + autores + '\n' +
            "lenguajes =" + lenguajes +'\n'+
            "descargas =" + descargas+'\n'+
            "*********************************************";
}

}

y la otra entindad es

@Entity @Table(name = "autores") public class AutoresAMostrar {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id;
private String nombre;
@Column(name = "fecha_nacimiento",nullable = true)
private int fechaNacimiento;
@Column(name = "fecha_muerte",nullable = true)
private int fechaMuerte;

@ManyToOne
@JoinColumn(name = "libros")
private LibroAMostrar libroAMostrar;

public AutoresAMostrar(){}

public AutoresAMostrar(DatosAutores datosAutores){
    this.nombre= datosAutores.nombre();
    this.fechaNacimiento=datosAutores.fechaNacimiento();
    this.fechaMuerte=datosAutores.fechaMuerte();
}




public Long getId() {
    return Id;
}

public void setId(Long id) {
    Id = id;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public int getFechaNacimiento() {
    return fechaNacimiento;
}

public void setFechaNacimiento(int fechaNacimiento) {
    this.fechaNacimiento = fechaNacimiento;
}

public int getFechaMuerte() {
    return fechaMuerte;
}

public void setFechaMuerte(int fechaMuerte) {
    this.fechaMuerte = fechaMuerte;
}

public LibroAMostrar getLibroAMostrar() {
    return libroAMostrar;
}

public void setLibroAMostrar(LibroAMostrar libroAMostrar) {
    this.libroAMostrar = libroAMostrar;
}

@Override
public String toString() {
    return nombre;
}

} pero en la base de datos aparece asi

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

2 respuestas

no logro relacionar la tabla libros con los autores pero en la bsae de datoas si se graban lo autores y los libros pero no se relacionan

solución!

¡Hola Oscar!

Entiendo que estás teniendo problemas para relacionar la tabla de autores con la tabla de libros en tu base de datos. Por lo que puedo ver en tu código, parece que estás utilizando la anotación @ManyToOne en la clase AutoresAMostrar para establecer la relación con la clase LibroAMostrar. Sin embargo, parece que el nombre de la columna que estás utilizando para la relación en la clase AutoresAMostrar no coincide con el nombre de la columna en la clase LibroAMostrar.

En la clase AutoresAMostrar, estás utilizando la anotación @JoinColumn(name = "libros") para establecer la relación con la clase LibroAMostrar. Sin embargo, deberías especificar el nombre de la columna en la tabla de autores que hace referencia a la tabla de libros. Si el nombre de la columna en la tabla de autores que hace referencia a la tabla de libros es diferente de "libros", deberías especificar ese nombre en la anotación @JoinColumn.

Por ejemplo, si la columna en la tabla de autores que hace referencia a la tabla de libros se llama "libro_id", tu anotación @JoinColumn debería verse así: @JoinColumn(name = "libro_id").

Espero que esto te ayude a solucionar el problema de la relación entre las tablas de autores y libros en tu base de datos. 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!