【发布时间】:2011-10-23 10:43:11
【问题描述】:
我在理解 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> 实际上可以是什么。我知道你可以在注解中指定诸如t 上方的targetEntity=String.class 之类的东西,但是这样你就失去了使用泛型的灵活性。我可以使用注释来限制可接受的泛型范围吗?例如:如果我希望从抽象类Parent 继承的类ChildA、ChildB 可以在那里持久化。此外,它还应该能够接受Strings。 Hibernate可以处理这样的事情吗?
【问题讨论】:
-
您希望 Hibernate 如何构建这样一个通用对象?似乎您必须拥有某种鉴别器列并识别所有可能使用的对象。但是,我不知道这是否可能在这里。
-
这正是我要问的! :)
标签: java hibernate generics inheritance orm