【发布时间】:2013-08-14 12:05:35
【问题描述】:
我有一个简单的数据模型如下:
- 实体 1:员工资产。这有一个对 Employee 对象的引用。
- 实体 2:EmployeeJobPosition。这也有对 Employee 的引用。它还引用了一个 JobPosition(这是另一个实体类)对象,该对象又包含一个 OrganisationUnitEntry(这是另一个实体类)对象的集合。
作为一个参数,我有一个用户选择的 OrganisationUnitEntry 对象的集合(我们称之为 ouEntries)。我需要一个查询,该查询将返回与 JobPosition 相关的所有 EmployeeAsset 对象,该 JobPosition 上有一个 OrganisationUnitEntry 集合,该集合是 ouEntries 的超集(即 ouEntries 是 ...jobPosition.organisationUnitEntries 的子集)。
因此可以使用以下内容动态构建查询:
SELECT ea
FROM EmployeeAsset ea, EmployeeJobPosition ejp
WHERE ea.employee = ejp.employee
AND :orgUnitEntry1 MEMBER OF ejp.jobPosition.organisationUnitEntries
...
AND :orgUnitEntryN MEMBER OF ejp.jobPosition.organisationUnitEntries
(其中 orgUnitEntry1 - N 只是 ouEntries 中的元素)。
但是,子集类型函数会更整洁,然后我可以将其放入我通常更喜欢的静态/命名查询中。类似的东西
...
AND :ouEntries SUBSET OF ejp.jobPosition.organisationUnitEntries
关于如何最好地编写这样的查询有什么想法吗?
【问题讨论】:
-
JPA 规范是怎么说的?
-
我找不到任何关于 SUBSET 函数的信息,这就是我要问的原因:) 它也可能不仅仅是一个函数,我只是在寻找一种替代/更好的方法来生成我在示例中以静态方式给出的动态查询