Tengo problemas para entender cómo Hibernate maneja los genéricos y me preguntaba cuál es la mejor manera de lograr mi objetivo.Uso de hibernación con genéricos
Dada una sencilla entidad genérica:
@Entity
public class Box<T>{
private T t;
@Id
private long id;
public void setT(T t) {
this.t = t;
}
public T getT() {
return t;
}
public void setId(long id) {
this.id = id;
}
public long getId() {
return id;
}
}
Al pasar por la inicialización de hibernación, estoy consiguiendo la excepción: ...has an unbound type and no explicit target entity. Resolve this Generic usage issue or set an explicit target attribute (eg @OneToMany(target=) or use an explicit @Type
Estoy casi seguro de que esto se debe a que no le he dado una lista de hibernación restricciones de lo que <T>
realmente puede ser. Sé que puede especificar cosas como targetEntity=String.class
sobre t
en una anotación, pero luego pierde la flexibilidad de tener genéricos. ¿Puedo limitar el alcance de lo que es un genérico aceptable usando anotaciones? Por ejemplo: ¿Qué sucede si quiero las clases ChildA
, ChildB
, que heredan de una clase abstracta Parent
para que se puedan persistir allí. Además, también debería poder aceptar String
s. ¿Puede Hibernate
lidiar con tal cosa?
¿Cómo espera que Hibernate para construir un objeto de este tipo genérico? Parece que tendrías que tener algún tipo de columna discriminatoria e identificar todos los posibles objetos que podrían usarse. Pero, no sé si eso es posible aquí. – Jeremy
¡Eso es exactamente lo que estoy pidiendo! :) – Ryan