JPA/toplink 异构实体列表

发布于 2024-09-15 10:33:46 字数 240 浏览 5 评论 0原文

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

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

Colleagues,
Using JPA I need resolve following issue: at database level exits 3 entities (saying SuperEntity, DetailsAEntity and DetailsBEntity). SuperEntity contains common part of fields for DetailsAEntity and DetailsBEntity.

So the question: is it possible to resolve collection of mixed elements DetailsAEntity and DetailsBEntity from JPA? May be exits some extension in toplink to specify class for entity?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

初心未许 2024-09-22 10:33:46

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

Assuming SuperEntity is mapped as the root of the inheritance tree then the result of queries for this type can return a heterogeneous collection of its concrete subclasses.

|煩躁 2024-09-22 10:33:46

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

3.6.5 多态查询

默认情况下,所有查询都是
多态性。即 FROM 子句
查询的不仅指定
特定实体的实例
它显式地指向的类
指的是,但也指的是子类。这
查询返回的实例包括
子类的实例
满足查询条件。

例如查询

从员工 e 中选择 avg(e.salary),其中 e.salary > 80000

返回所有人的平均工资
员工,包括以下子类型
员工,例如经理
豁免

4.4.8 多态性

Java 持久性查询是
自动多态。从
查询的子句不仅指定
特定实体的实例
明确引用的类
但也有子类。这
查询返回的实例包括
子类的实例
满足查询条件。

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

Queries are polymorphic in standard JPA. Here are the relevant sections from the JPA 1.0 Specification:

3.6.5 Polymorphic Queries

By default, all queries are
polymorphic. That is, the FROM clause
of a query designates not only
instances of the specific entity
class(es) to which it explicitly
refers, but subclasses as well. The
instances returned by a query include
instances of the subclasses that
satisfy the query conditions.

For example, the query

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

returns the average salary of all
employees, including subtypes of
Employee, such as Manager and
Exempt.

And

4.4.8 Polymorphism

Java Persistence queries are
automatically polymorphic. The FROM
clause of a query designates not only
instances of the specific entity
class(es) to which explicitly refers
but of subclasses as well. The
instances returned by a query include
instances of the subclasses that
satisfy the query criteria.

So any query on a supertype will include subtypes in the results by default.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文