0

假设我有这门课

@MappedSuperclass
public abstract class A{...}

还有这堂课

@Entity
@Table
public class B extends {...}

我能处理这种多态性吗?

A aParent = serviceLayer.getSubClass(Long id)

或像这样:

List<A> listOfItems = serviceLayer.getSubClassAsList();

这两种说法都有效吗?假设getSubClass(Long id) 并分别getSubClassAsList返回 aB和 a List<B>

4

1 回答 1

0

问题不是很清楚,但是您将无法对超类进行查询,因为hibernate 不知道要针对哪个表发出请求。这可以被视为@Table注释在您的子类B上,而不是在您的超类上A

换句话说:您将能够将结果实体 B 分配给变量 A(java 继承的东西),但您将无法在 HQL 中编写类似的内容:from A ...因为 hibernate 不知道要查询哪个表(ORM不代表Object Reading Mind(开发人员的);))。

于 2013-03-19T14:33:00.487 回答