Por partes.
Crear un género:
Genero g=new Genero(); g.setNombre("SteamPunk"); DAO<Genero> gdao=new DAO<>(Genero.class); gdao.save(g);
Crear un libro:
DAO<Genero> gdao=new DAO<>(Genero.class); Genero g=gdao.get(8); Libro l=new Libro(); l.setTitulo("Luna cruel"); l.setPaginas(750); l.setGenero(g); DAO<Libro> ldao=new DAO<>(Libro.class); ldao.save(l);
Crear un autor
DAO<Libro> ldao=new DAO<>(Libro.class); Libro l=ldao.get(9); DAO<Autor> adao=new DAO<>(Autor.class); Autor a=new Autor(); a.setNombre("Juan Perez"); a.getLibros().add(l); adao.save(a);
Todo junto
// Todo junto DAO<Genero> gdao=new DAO<>(Genero.class); DAO<Libro> ldao=new DAO<>(Libro.class); DAO<Autor> adao=new DAO<>(Autor.class); // Creo el género Genero g=new Genero(); g.setNombre("Realismo sucio"); gdao.save(g); // Creo el libro Libro l=new Libro(); l.setTitulo("Cloacas de Barcelona"); l.setPaginas(750); // Le asigno el género que acao de crear l.setGenero(g); ldao.save(l); // Creo el autor Autor a=new Autor(); a.setNombre("Andreu Martín"); // Le añado el libro que acabo de crear a.getLibros().add(l); adao.save(a);
Autores por género.
Con un método:
package com.trifulcas.Biblioteca; import java.util.ArrayList; import java.util.List; import com.trifulcas.DAO.DAO; import com.trifulcas.models.Autor; import com.trifulcas.models.Genero; import com.trifulcas.models.Libro; public class GetAutores { public static void main(String[] args) { DAO<Genero> gdao=new DAO<>(Genero.class); Genero g=gdao.get(8); System.out.println(getAutores2(g)); System.out.println(g.getAutores()); } public static List<Autor> getAutores(Genero genero){ List<Autor> res=new ArrayList<>(); for(Libro libro:genero.getLibros()) { for(Autor autor:libro.getAutores()) { res.add(autor); } } return res; } public static List<Autor> getAutores2(Genero genero){ List<Autor> res=new ArrayList<>(); for(Libro libro:genero.getLibros()) { res.addAll(libro.getAutores()); } return res; } }
Dentro del POJO (no recomendable pero… ya se sabe 😉 )
package com.trifulcas.models; import java.util.ArrayList; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; @Entity public class Genero { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "idgenero") private int idGenero; private String nombre; @OneToMany(mappedBy="genero") List<Libro> libros=new ArrayList(); public Genero() { super(); // TODO Auto-generated constructor stub } public int getIdGenero() { return idGenero; } public void setIdGenero(int idGenero) { this.idGenero = idGenero; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public List<Libro> getLibros() { return libros; } public void setLibros(List<Libro> libros) { this.libros = libros; } public List<Autor> getAutores() { List<Autor> res=new ArrayList<>(); for(Libro libro:this.getLibros()) { res.addAll(libro.getAutores()); } return res; } @Override public String toString() { return "Genero [idGenero=" + idGenero + ", nombre=" + nombre + "]"; } }