Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/08/2011, 13:48
nicostone
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 1
Hibernate + Herencia

Hola gente soy relativamente nuevo en este tema y quisiera saber si es posible realizar lo siguiente, me gustaría poder realizar la herencia con hibertenate pero que solo genere una tabla por clase hija, es decir si tengo la clase (Padre) persona y de la clase persona extiende la clase (Hija) empleadoPermanente y la clase (Hija) empleadoContratado me gustaria que me creara dos tablas empleadoPermanente y empleadoContratado donde estas tablas tendrian los atributos de la clase persona mas los que extiende de la clase hija que corresponda, le dejo como lo he realizado pero no me ha funcionado... tambien he visto otras estrategias pero lo que quisiera realizar es lo que he comentado anteriormente.

Les dejo el codigo

CLASE PERSONA

Código:
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Persona {
	@Column(name = "Nombre")
	private String nombre;
	@Column(name = "Apelldio")
	private String apellido;
	@Column(name = "Direccion")
	private String direccion;
	@Column(name = "Telefono")
	private String telefono;
	@Column(name = "Celular")
	private String celular;
	@Column(name = "Email")
	private String email;
	
	public Persona() {
		super();
	}
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
	public String getDireccion() {
		return direccion;
	}
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	public String getTelefono() {
		return telefono;
	}
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
	public String getCelular() {
		return celular;
	}
	public void setCelular(String celular) {
		this.celular = celular;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}
Código:
@Entity
@Table(name = "Empleado_Contratado")
public class EmpleadoContratado extends Persona{
	@GeneratedValue
	@Id
	@Column(name = "Id_EmpleadoC")
	private long idEmpleadoC;
	@Column(name ="Especialidad")
	private String especialidad;

	public EmpleadoContratado() {
		super();
	}

	public String getEspecialidad() {
		return especialidad;
	}

	public void setEspecialidad(String especialidad) {
		this.especialidad = especialidad;
	}

}
Bueno faltan metodos y propiedades en esta ultima clase pero es la idea, como esta ahi cuando guardo un empleadoContratado solo me crea la tabla y guardar las propiedades del empleadoContratado no de la persona es decir IdEmpleadoContratado y Especialidad

Cualquier ayuda sera muy bienvenida