Clases abstractas en Hibernate
Cuando creo clases de entidad que extienden de una clase abstracta, ¿cómo puedo cambiar el nombre de las columnas para los campos definidos en la clase abstracta? (La clase abstracta no representa ninguna tabla en la base de datos)
Este es mi código:
Tengo la siguiente clase abstracta OpcionCatalogo:
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class OpcionCatalogo implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
protected Integer id;
@Column(name = "VNombre", nullable = false, unique = true)
protected String nombre;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
y la extienden las clases Categoria y Estatus:
@OneToOne(targetEntity = Estatus.class)
private Estatus estatus;
public Estatus getEstatus() {
return estatus;
}
public void setEstatus(Estatus estatus) {
this.estatus = estatus;
}
}
//nada por aqui
}
}
En la Clase Torneo mapeo las relaciones de la siguiente manera:
private Categoria categoria;
@OneToOne(targetEntity = Estatus.class)
private Estatus estatus;
Cuando Hibernate me genera el sql para insertar un Torneo genera esto:
El nombre correcto de los campos en las tablas es NIdCategoria y NIdEstatus.
Si utilizo @JoinColumn(name = "NIdCategoria")
me quita ese campo de la consulta sql :(
- Inicie sesión o regístrese para enviar comentarios
Ya encontre el problema :P
El
@JoinColum
lo estaba usando dentro de un@JoinTable
por eso me quitaba el campo del query.Deje mis anotaciones de la siguiente manera:
@JoinColumn(name = "NIdCategoria")
private Categoria categoria;
@OneToOne
@JoinColumn(name = "NIdEstatus")
private Estatus estatus;
Complemento de Persistencias
Aqui tienes un link sobre Java Persistencias( JPA, Hibernate) : http://en.wikibooks.org/wiki/Java_Persistence/Persisting
Ojala te sea de ayuda para mas adelante.