У меня возникли проблемы с пониманием того, как Hibernate справляется с дженериками, и мне было интересно, как лучше всего достичь моей цели.
Учитывая простую родовую сущность:
@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;
}
}
При прохождении через спящий режиминициализация, я получаю исключение: ...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
Я почти уверен, что это потому, что я не дал hibernate список ограничений того, что на самом деле может быть <T>
.Я знаю, что вы можете указать такие вещи, как targetEntity=String.class
выше t
в аннотации, но тогда вы потеряете гибкость наличия дженериков.Могу ли я ограничить сферу применения общего аннотации?Например: что, если я хочу, чтобы классы ChildA
, ChildB
, которые наследуются от абстрактного класса Parent
, были бы сохраняемыми там.Кроме того, он также должен быть в состоянии принять String
с.Может ли Hibernate
справиться с такой вещью?