Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/10/2009, 13:04
davidbons
 
Fecha de Ingreso: octubre-2006
Mensajes: 41
Antigüedad: 18 años, 3 meses
Puntos: 0
relacion uno a muchos hibernate

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