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 + "]";
}
}