Estimados amigos, tengo las siguientes clases:
CLASE LIBRO
public class Libro implements Serializable{
private static final long serialVersionUID = 8540793917855645502L;
private int id;
private String titulo, autor;
private Editorial editorial;
public int getId() {
return id;
}
private void setId(int id) {
this.id = id;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public String toString(){
return "Libro: " + this.titulo + ", Autor:" + this.autor + ", Editorial:" + editorial.getNombre();
}
public void setEditorial(Editorial editorial) {
this.editorial = editorial;
}
public Editorial getEditorial() {
return editorial;
}
}
CLASE EDITORIAL
public class Editorial implements Serializable{
/**
*
*/
private static final long serialVersionUID = -8150344308611441920L;
private int id;
private String nombre;
private Set<Libro> libros;
public Set<Libro> getLibros() {
return libros;
}
public void setLibros(Set<Libro> libros) {
this.libros = libros;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Editorial(){
id = 0;
nombre = "";
libros = new HashSet<Libro>();
}
public String toString(){
String resultado = "Editorial: " + id + " " + nombre;
resultado += libros.size();
Iterator<Libro> it = libros.iterator();
while (it.hasNext()){
Libro lib = it.next();
resultado += "\nLibro:" +lib;
}
return resultado;
}
}
MAPPING LIBRO
<hibernate-mapping>
<class name="hibernate.Libro" table="libro">
<id name="id" column="libro_id" type="int">
<generator class="increment"/>
</id>
<property name="titulo" column="libro_titulo" type="string"/>
<property name="autor" column="libro_autor" type="string"/>
<many-to-one name="editorial" class="hibernate.Editorial" column="editorial_fk" not-null="true"/>
</class>
</hibernate-mapping>
MAPPING EDITORIAL
<hibernate-mapping>
<class name="hibernate.Editorial" table="editorial">
<id name="id" column="editorial_id" type="int">
<generator class="increment"/>
</id>
<property name="nombre" column="editorial_nombre" type="string" />
<set name="libros" inverse="true" lazy="true" >
<key column="editorial_id" />
<one-to-many class="hibernate.Libro" />
</set>
</class>
</hibernate-mapping>
Mi duda es que no me carga el conjunto de libros cuando hago la siguiente consulta
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//Editorial e = (Editorial) session.get(Editorial.class, 1);
String sql = "from Editorial as e left join fetch e.libros";
Query q = session.createQuery(sql);
List<Editorial> editoriales = q.list();
tx.commit();
Esa consulta debería cargar el listado de editorial, con los libros que tiene cada uno.
Lo que más necesito es cargar una editorial concreta y cargar todos sus libros asociados
he probado con
Editorial e = (Editorial) session.get(Editorial.class, 1);
pero no carga los libros