同事 使用JPA我需要解决以下问题:在数据库级别退出3个实体(说SuperEntity,DetailsAEntity和DetailsBEntity)。 SuperEntity包含DetailsAEntity和DetailsBEntity的常用字段。
所以问题是:是否有可能从JPA解决混合元素DetailsAEntity和DetailsBEntity的集合?可以退出toplink中的某个扩展名来指定实体类吗?
答案 0 :(得分:3)
假设SuperEntity被映射为继承树的根,那么此类型的查询结果可以返回其具体子类的异构集合。
答案 1 :(得分:0)
查询在标准JPA中是多态的。以下是JPA 1.0规范的相关章节:
3.6.5多态查询
默认情况下,所有查询都是 多态。也就是FROM子句 查询不仅指定 特定实体的实例 明确表示的类 引用,但也是子类。该 查询返回的实例包括 子类的实例 满足查询条件。
例如,查询
select avg(e.salary) from Employee e where e.salary > 80000
返回所有人的平均工资 员工,包括子类型
Employee
,例如Manager
和Exempt
。
并且
4.4.8多态性
Java持久性查询是 自动多态。 FROM 查询的子句不仅指定 特定实体的实例 明确提及的类 但也有子类。该 查询返回的实例包括 子类的实例 满足查询标准。
因此,对超类型的任何查询都将默认包含结果中的子类型。