JPA / toplink异构实体列表

时间:2010-08-24 15:28:02

标签: java orm jpa polymorphism toplink

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

所以问题是:是否有可能从JPA解决混合元素DetailsAEntity和DetailsBEntity的集合?可以退出toplink中的某个扩展名来指定实体类吗?

2 个答案:

答案 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   查询的子句不仅指定   特定实体的实例   明确提及的类   但也有子类。该   查询返回的实例包括   子类的实例   满足查询标准。

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