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

Hibernate + Herencia

Estas en el tema de Hibernate + Herencia en el foro de Java en Foros del Web. Hola amigos, estoy realizando un aplicacion de hibernate de ejemplo y tengo un problema con la Herencia, la estoy realizando con la forma un tabla ...
  #1 (permalink)  
Antiguo 14/10/2009, 19:35
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 1
Hibernate + Herencia

Hola amigos, estoy realizando un aplicacion de hibernate de ejemplo y tengo un problema con la Herencia, la estoy realizando con la forma un tabla por subclase.
La insercion me funciona perfecto pero cuando quiero recuperar los contadores, no me devuelve nada.

Paso a mostrarles los diferentes archivos:

Archivo de mapeo de Empleado.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http.......://......hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 14-oct-2009 18:49:38 by Hibernate Tools 3.2.1.GA polymorphism="implicit"-->
<hibernate-mapping>
<class catalog="escuela" name="ClasesYMapeos.Empleado" table="empleados">

<id name="empleadoId" column="EmpleadoID">
<generator class="identity"/>
</id>

<property name="nombre" type="string">
<column length="45" name="Nombre" not-null="true"/>
</property>
<property name="apellido" type="string">
<column length="45" name="Apellido" not-null="true"/>
</property>

<joined-subclass name="ClasesYMapeos.Contador" table="Contadores">
<key column="EmpleadoId"/>
<property column="Sector" name="Sector" type="java.lang.String"/>
</joined-subclass>
</class>
</hibernate-mapping>



Clase Empleado
package ClasesYMapeos;
// Generated 14-oct-2009 18:49:36 by Hibernate Tools 3.2.1.GA

/**
* Empleados generated by hbm2java
*/
public class Empleado implements java.io.Serializable {


private int empleadoId;
private String nombre;
private String apellido;

public Empleado() {
}

public Empleado(int empleadoId, String nombre, String apellido) {
this.empleadoId = empleadoId;
this.nombre = nombre;
this.apellido = apellido;
}

public int getEmpleadoId() {
return this.empleadoId;
}

public void setEmpleadoId(int empleadoId) {
this.empleadoId = empleadoId;
}
public String getNombre() {
return this.nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return this.apellido;
}

public void setApellido(String apellido) {
this.apellido = apellido;
}
}

Clase Contador
Package ClasesYMapeos;

public class Contador extends Empleado implements java.io.Serializable{


private int empleadoId;
private String sector;

public Contador() {
}

public Contador(String sector) {
this.sector = sector;
}


public int getEmpleadoId() {
return this.empleadoId;
}

public void setEmpleadoId(int empleadoId) {
this.empleadoId = empleadoId;
}

public String getSector() {
return this.sector;
}

public void setSector(String sector) {
this.sector = sector;
}

}

Clase ServiciosContadores

package Servicios;

/* Clases Que Realizamos */
import ClasesYMapeos.Contador;
import HibernateUtil.MySessionFactory;
/* Java util */
import java.util.List;
/* Las clases necesarias pra trabajar con Hibernate */
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class ServiciosContadores {

public boolean newContador(Contador unContador) {
boolean creado = false;
Session session = MySessionFactory.getSession();
Transaction tx = null;
try{
tx = session.beginTransaction();
session.save(unContador);
tx.commit();
creado = true;
}catch(HibernateException he){
if(tx!=null) tx.rollback();
System.out.println(he.getMessage());
}finally{
session.close();
}
return creado;
}

ESTE ES EL METODO QUE NO ME RECUPERA NADA, No CREO QUE EL PROBLEMA SEA ESTE, PERO BUENO SE LOS RECALCO POR LAS DUDAS.
public List<Contador> listCont(){
/* Iniciamo y tomamos la instancia de la session */
Session miSession = MySessionFactory.getSession();
Transaction tx = null;
List<Contador> contadores = null;

try{
miSession.beginTransaction();
/* Realizamos la consulta en HQL */
String hql = "FROM Contador";
Query q = miSession.createQuery(hql);
contadores = q.list(); /* retornamos una lista de categorias */
return contadores;
}catch(HibernateException he){
/* si pasa algun errro volvemos atrar la tansaccion */
if(tx!=null) tx.rollback();
}finally{
miSession.close();
return contadores; /* Pueder ser NULL o una lista de Categorias */
}
}

}

Puse para ver que me muestre las consultas SQL y cuando ingreso una contador me muestra esto

Hibernate: insert into escuela.empleados (Nombre, Apellido) values (?, ?)
Hibernate: insert into contadores (Sector, EmpleadoID) values (?, ?)


todo perfecto como se llaman los campos.

Pero cuando quiero recuperar la consulta SQL que me muestra es:

select contador0_.EmpleadoID as EmpleadoID0_, contador0_1_.Nombre as Nombre0_, contador0_1_.Apellido as Apellido0_, contador0_.Sector as Sector1_ from contadores contador0_ inner join escuela.empleados contador0_1_ on contador0_.EmpleadoID=contador0_1_.EmpleadoID

Todos esos nombre raros, espero que me puedan ayudar, ya no se que mas probrar.

Y me dice lo siguiente: GRAVE: Unknown column 'contador0_1_.EmpleadoID' in 'on clause'


Calculo que me falta alguna propiedad o algo por el estilo, pero todo lo que leo de internet no me funciona, por eso acudo a ustede como ultima chance.

Saludos y gracias.

NicoStone.

Última edición por nicostone; 17/10/2009 a las 14:19
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 19:59.