Foros del Web » Programación para mayores de 30 ;) » Java »

relacion uno a muchos hibernate

Estas en el tema de relacion uno a muchos hibernate en el foro de Java en Foros del Web. Estimados amigos, tengo las siguientes clases: CLASE LIBRO public class Libro implements Serializable{ private static final long serialVersionUID = 8540793917855645502L; private int id; private String ...
  #1 (permalink)  
Antiguo 01/10/2009, 13:04
 
Fecha de Ingreso: octubre-2006
Mensajes: 41
Antigüedad: 17 años, 6 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
  #2 (permalink)  
Antiguo 02/10/2009, 04:43
 
Fecha de Ingreso: octubre-2006
Mensajes: 41
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: relacion uno a muchos hibernate

tema resuelto
por si a alguien le sirve:
hay que cambiar en mapping editorial <key column="editorial_id" />
por <key column="editorial_fk" />
  #3 (permalink)  
Antiguo 02/10/2009, 05:21
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: relacion uno a muchos hibernate

ya q vos estás en el tema.. esa "editorial_fk" es el nombre que le diste a la RELACIÓN a la fk editorial en la tabla Libros? como hace poco empecé con los ORM, estaba acostumbrado a no poner nombres a estas.. eso sería un problema no?
me va ser imposible hacer las relaciones 1 to many, many to many ...etc
  #4 (permalink)  
Antiguo 02/10/2009, 11:40
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: relacion uno a muchos hibernate

http://www.forosdelweb.com/f45/jpa-t...1/#post3107464

Una sugerencia
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:41.