2

同事,使用 JPA 我需要解决以下问题:在数据库级别退出 3 个实体(例如 SuperEntity、DetailsAEntity 和 DetailsBEntity)。SuperEntity 包含 DetailsAEntity 和 DetailsBEntity 字段的公共部分。

所以问题是:是否可以从 JPA 解决混合元素 DetailsAEntity 和 DetailsBEntity 的集合?可能会在 toplink 中退出一些扩展以指定实体的类?

4

2 回答 2

3

假设 SuperEntity 被映射为继承树的根,那么对该类型的查询结果可以返回其具体子类的异构集合。

于 2010-08-24T19:17:59.630 回答
0

查询在标准 JPA 中是多态的。以下是 JPA 1.0 规范中的相关部分:

3.6.5 多态查询

默认情况下,所有查询都是多态的。也就是说,查询的 FROM 子句不仅指定它明确引用的特定实体类的实例,还指定子类。查询返回的实例包括满足查询条件的子类的实例。

例如,查询

select avg(e.salary) from Employee e where e.salary > 80000

返回所有员工的平均工资,包括 的子类型 Employee,例如ManagerExempt

4.4.8 多态性

Java Persistence 查询是自动多态的。查询的 FROM 子句不仅指定明确引用的特定实体类的实例,还指定子类的实例。查询返回的实例包括满足查询条件的子类的实例。

因此,默认情况下,对超类型的任何查询都将在结果中包含子类型。

于 2010-08-25T02:16:58.197 回答