Problemas con las joined-subclass en Hibernate
Hola!!!
Tengo una aplicación con una clase padre Publicacion, de la que heredan otras como por ejemplo Libro.
He hecho el mapeo a Hibernate en Publicacion.hbm.xml así:
<class name="Publicacion" table="PUBLICACION">
<id name="id" type="int">
<column name="id" sql-type="int(11)"/>
<generator class="increment"/>
</id>
<property name="titulo" type="string">
<column name="titulo" not-null="true"/>
</property>
<property name="resumen" type="string">
<column name="resumen"/>
</property>
<joined-subclass name="Libro" table="LIBRO">
<key column="idLibro" not-null="true"/>
<property name="ISBN" type="string">
<column name="ISBN" not-null="true"/>
</property>
<property name="idEditorial" type="int">
<column name="idEdit"/>
</property>
<property name="ciudad" type="string">
<column name="ciudad" not-null="true"/>
</property>
<property name="idPais" type="int">
<column name="idPais"/>
</property>
<property name="numPag" type="int">
<column name="numpag"/>
</property>
<property name="anyoPub" type="int">
<column name="anyo"/>
</property>
</joined-subclass>
Me guarda correctamente los objetos tanto en la tabla Publicacion como en la tabla Libro, el problema es que para hacer un select de todos los libros, no consigo que funcione:
List results=session.createSQLQuery("select P.titulo from LIBRO L inner join PUBLICACION P on P.id=L.idLibro").list();
Iterator it=results.iterator();
while(it.hasNext()){
Publicacion p=(Publicacion)it.next();
System.out.println(p.getTitulo());
System.out.println(p.getResumen());
}
Al ejecutarlo me arroja la excepción:
java.lang.ClassCastException, tanto si le hago un casting con Publicacion como si se lo hago con Libro.
El caso es que he comprobado que el número de resultados que obtengo en la consulta coincide con el número de filas de la tabla Libros en mi base de datos, pero el problema es q no puedo acceder a los objetos para obtener sus datos.
Si alguien me puede ayudar,se lo agradezco de antemano!!!
Tengo una aplicación con una clase padre Publicacion, de la que heredan otras como por ejemplo Libro.
He hecho el mapeo a Hibernate en Publicacion.hbm.xml así:
<class name="Publicacion" table="PUBLICACION">
<id name="id" type="int">
<column name="id" sql-type="int(11)"/>
<generator class="increment"/>
</id>
<property name="titulo" type="string">
<column name="titulo" not-null="true"/>
</property>
<property name="resumen" type="string">
<column name="resumen"/>
</property>
<joined-subclass name="Libro" table="LIBRO">
<key column="idLibro" not-null="true"/>
<property name="ISBN" type="string">
<column name="ISBN" not-null="true"/>
</property>
<property name="idEditorial" type="int">
<column name="idEdit"/>
</property>
<property name="ciudad" type="string">
<column name="ciudad" not-null="true"/>
</property>
<property name="idPais" type="int">
<column name="idPais"/>
</property>
<property name="numPag" type="int">
<column name="numpag"/>
</property>
<property name="anyoPub" type="int">
<column name="anyo"/>
</property>
</joined-subclass>
Me guarda correctamente los objetos tanto en la tabla Publicacion como en la tabla Libro, el problema es que para hacer un select de todos los libros, no consigo que funcione:
List results=session.createSQLQuery("select P.titulo from LIBRO L inner join PUBLICACION P on P.id=L.idLibro").list();
Iterator it=results.iterator();
while(it.hasNext()){
Publicacion p=(Publicacion)it.next();
System.out.println(p.getTitulo());
System.out.println(p.getResumen());
}
Al ejecutarlo me arroja la excepción:
java.lang.ClassCastException, tanto si le hago un casting con Publicacion como si se lo hago con Libro.
El caso es que he comprobado que el número de resultados que obtengo en la consulta coincide con el número de filas de la tabla Libros en mi base de datos, pero el problema es q no puedo acceder a los objetos para obtener sus datos.
Si alguien me puede ayudar,se lo agradezco de antemano!!!
