Persistence Anotations
Publicado por Kooper (2 intervenciones) el 07/02/2011 23:11:46
Hola, tengo un proyecto java con hibernate, tengo una herencia: superclase persona y subclases paciente y medico.
En la BBDD tengo:
--TABLA PERSONAS
create table personas(
dni char(9) primary key,
nombre char(20) not null,
apellido1 char(30) not null,
apellido2 char(30),
fecha_nac date not null,
direccion char(255),
telefono1 integer,
telefono2 integer,
mail char(60),
fecha_alta date not null,
fecha_baja date,
tipo char(1) not null);
--TABLA PACIENTES
create table pacientes(
dni char(9) primary key,
CONSTRAINT fk_pacientes1 FOREIGN KEY (dni)
REFERENCES personas(dni));
--TABLA MEDICOS
create table medicos(
dni char(9) primary key,
codcolegiado integer not null,
despacho char(4),
codservicio integer,
CONSTRAINT fk_medicos1 FOREIGN KEY (codservicio)
REFERENCES servicios(codservicio),
CONSTRAINT fk_medicos2 FOREIGN KEY (dni)
REFERENCES personas(dni));
Ahora he creado las clases de la siguiente forma:
@Entity
@Table(name="personas")
@Inheritance(strategy = InheritanceType.JOINED)
public class Persona{
private String nombre;
private String apellido1;
private String apellido2;
private Date fechaNac;
private String dni;
private String direccion;
private Integer telefono1;
private Integer telefono2;
private String mail;
private Date fechaAlta;
private Date fechaBaja;
private String tipo;
public Persona() {
}
public Persona(String nombre, String apellido1, String apellido2, Date fechaNac, String dni, String direccion, Integer telefono1, Integer telefono2, String mail, Date fechaAlta) {
this.nombre = nombre;
this.apellido1 = apellido1;
this.apellido2 = apellido2;
this.fechaNac = fechaNac;
this.dni = dni;
this.direccion = direccion;
this.telefono1 = telefono1;
this.telefono2 = telefono2;
this.mail = mail;
this.fechaAlta = fechaAlta;
}
@Id
@Column(name="dni",length=9)
public String getDni() {
return dni;
}
...
}
@Entity
@Table(name="pacientes")
public class Paciente extends Persona{
public Paciente() {
}
public Paciente(String nombre, String apellido1, String apellido2, Date fechaNac, String dni, String direccion, Integer telefono1, Integer telefono2, String mail, Date fechaAlta) {
super(nombre, apellido1, apellido2, fechaNac, dni, direccion, telefono1, telefono2, mail, fechaAlta);
}
}
@Entity
@Table(name="medicos")
public class Medico extends Persona{
private Integer codcolegiado;
private String despacho;
private Servicio servicio;
public Medico() {
}
public Medico(String nombre, String apellido1, String apellido2, Date fechaNac, String dni, String direccion, Integer telefono1, Integer telefono2, String mail, Date fechaAlta, Integer codmedico, Integer codcolegiado, String despacho) {
super(nombre, apellido1, apellido2, fechaNac, dni, direccion, telefono1, telefono2, mail, fechaAlta);
this.codcolegiado = codcolegiado;
this.despacho = despacho;
}
@Column(name="codcolegiado",nullable=false)
public Integer getCodcolegiado() {
return codcolegiado;
}
public void setCodcolegiado(Integer codcolegiado) {
this.codcolegiado = codcolegiado;
}
@Column(name="despacho",length=4)
public String getDespacho() {
return despacho;
}
public void setDespacho(String despacho) {
this.despacho = despacho;
}
....
}
El problema es q al crear un paciente e insertar solo me inserta el DNi en la tabla pacientes, en personas no me inserta nada. Alguien me podría ayudar?
Algun consejo o recomendación?
Muchas gracias
En la BBDD tengo:
--TABLA PERSONAS
create table personas(
dni char(9) primary key,
nombre char(20) not null,
apellido1 char(30) not null,
apellido2 char(30),
fecha_nac date not null,
direccion char(255),
telefono1 integer,
telefono2 integer,
mail char(60),
fecha_alta date not null,
fecha_baja date,
tipo char(1) not null);
--TABLA PACIENTES
create table pacientes(
dni char(9) primary key,
CONSTRAINT fk_pacientes1 FOREIGN KEY (dni)
REFERENCES personas(dni));
--TABLA MEDICOS
create table medicos(
dni char(9) primary key,
codcolegiado integer not null,
despacho char(4),
codservicio integer,
CONSTRAINT fk_medicos1 FOREIGN KEY (codservicio)
REFERENCES servicios(codservicio),
CONSTRAINT fk_medicos2 FOREIGN KEY (dni)
REFERENCES personas(dni));
Ahora he creado las clases de la siguiente forma:
@Entity
@Table(name="personas")
@Inheritance(strategy = InheritanceType.JOINED)
public class Persona{
private String nombre;
private String apellido1;
private String apellido2;
private Date fechaNac;
private String dni;
private String direccion;
private Integer telefono1;
private Integer telefono2;
private String mail;
private Date fechaAlta;
private Date fechaBaja;
private String tipo;
public Persona() {
}
public Persona(String nombre, String apellido1, String apellido2, Date fechaNac, String dni, String direccion, Integer telefono1, Integer telefono2, String mail, Date fechaAlta) {
this.nombre = nombre;
this.apellido1 = apellido1;
this.apellido2 = apellido2;
this.fechaNac = fechaNac;
this.dni = dni;
this.direccion = direccion;
this.telefono1 = telefono1;
this.telefono2 = telefono2;
this.mail = mail;
this.fechaAlta = fechaAlta;
}
@Id
@Column(name="dni",length=9)
public String getDni() {
return dni;
}
...
}
@Entity
@Table(name="pacientes")
public class Paciente extends Persona{
public Paciente() {
}
public Paciente(String nombre, String apellido1, String apellido2, Date fechaNac, String dni, String direccion, Integer telefono1, Integer telefono2, String mail, Date fechaAlta) {
super(nombre, apellido1, apellido2, fechaNac, dni, direccion, telefono1, telefono2, mail, fechaAlta);
}
}
@Entity
@Table(name="medicos")
public class Medico extends Persona{
private Integer codcolegiado;
private String despacho;
private Servicio servicio;
public Medico() {
}
public Medico(String nombre, String apellido1, String apellido2, Date fechaNac, String dni, String direccion, Integer telefono1, Integer telefono2, String mail, Date fechaAlta, Integer codmedico, Integer codcolegiado, String despacho) {
super(nombre, apellido1, apellido2, fechaNac, dni, direccion, telefono1, telefono2, mail, fechaAlta);
this.codcolegiado = codcolegiado;
this.despacho = despacho;
}
@Column(name="codcolegiado",nullable=false)
public Integer getCodcolegiado() {
return codcolegiado;
}
public void setCodcolegiado(Integer codcolegiado) {
this.codcolegiado = codcolegiado;
}
@Column(name="despacho",length=4)
public String getDespacho() {
return despacho;
}
public void setDespacho(String despacho) {
this.despacho = despacho;
}
....
}
El problema es q al crear un paciente e insertar solo me inserta el DNi en la tabla pacientes, en personas no me inserta nada. Alguien me podría ayudar?
Algun consejo o recomendación?
Muchas gracias
Valora esta pregunta
0