Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/UserGuide/JPA/A additionalcriteria"
m |
m (first use with MwImporter) |
||
Line 1: | Line 1: | ||
− | + | <span id="top"></span> | |
− | + | ||
− | < | + | |
{| class="simple oac_no_warn" width="100%" | {| class="simple oac_no_warn" width="100%" | ||
− | | align="left" valign="top" | | + | | align="left" valign="top" | '''EclipseLink JPA Extensions Reference Guide'''<br />'''Version 2.4.x'''<br /> |
| width="144" align="right" valign="bottom" | | | width="144" align="right" valign="bottom" | | ||
{| class="simple oac_no_warn" width="100%" | {| class="simple oac_no_warn" width="100%" | ||
| | | | ||
| align="center" valign="top" | | | align="center" valign="top" | | ||
− | [ | + | [[Table_of_Contents|[[Image:Conticon.gif|30px|Go To Table Of Contents]]<br /> Contents]] |
|} | |} | ||
|} | |} | ||
Line 17: | Line 15: | ||
{| class="simple oac_no_warn" width="250" | {| class="simple oac_no_warn" width="250" | ||
| align="center" | | | align="center" | | ||
− | [ | + | [[Annotations_Reference|[[Image:Larrow.gif|Previous]] Previous]] |
| align="center" | | | align="center" | | ||
− | [ | + | [[@Array|Next]] [[Image:Rarrow.gif|Next]] |
| | | | ||
|} | |} | ||
− | < | + | <span id="BABCJADG"></span> |
+ | |||
---- | ---- | ||
− | + | ==@AdditionalCriteria== | |
− | + | Use <code>@AdditionalCriteria</code> to define parameterized views on data. You can define additional criteria on entities or mapped supercolossal. When specified at the mapped superclass level, the additional criteria definition applies to all inheriting entities, unless those entities define their own additional criteria, in which case those defined for the mapped superclass are ignored. | |
− | + | <span id="sthref11"></span> | |
− | ''' | + | '''Annotation Elements''' |
− | [#CHDGJGDCxx Table 2-1] describes this annotation's elements. | + | [[#CHDGJGDCxx|Table 2-1]] describes this annotation's elements. |
− | < | + | <span id="sthref12"></span><span id="CHDGJGDCxx"></span> |
− | ''''' | + | '''''Table 2-1 @AdditionalCriteria Annotation Elements''''' |
{| class="HRuleFormalWide" dir="ltr" title="@AdditionalCriteria Annotation Elements" summary="This table describes the list of attributes for this annotation." width="100%" border="1" frame="hsides" rules="rows" cellpadding="3" frame="hsides" rules="rows" | {| class="HRuleFormalWide" dir="ltr" title="@AdditionalCriteria Annotation Elements" summary="This table describes the list of attributes for this annotation." width="100%" border="1" frame="hsides" rules="rows" cellpadding="3" frame="hsides" rules="rows" | ||
|- align="left" valign="top" | |- align="left" valign="top" | ||
− | ! id="r1c1-t2" align="left" valign="bottom" | | + | ! id="r1c1-t2" align="left" valign="bottom" | '''Attribute''' |
− | ! id="r1c2-t2" align="left" valign="bottom" | | + | ! id="r1c2-t2" align="left" valign="bottom" | '''Description''' |
− | ! id="r1c3-t2" align="left" valign="bottom" | | + | ! id="r1c3-t2" align="left" valign="bottom" | '''Default''' |
|- align="left" valign="top" | |- align="left" valign="top" | ||
| id="r2c1-t2" headers="r1c1-t2" align="left" | | | id="r2c1-t2" headers="r1c1-t2" align="left" | | ||
Line 53: | Line 52: | ||
|} | |} | ||
− | <br / | + | <br /> |
− | + | <span id="sthref13"></span> | |
+ | |||
+ | '''Usage''' | ||
Set additional criteria parameters through properties on the entity manager factory or on the entity manager. Properties set on the entity manager override identically named properties set on the entity manager factory. Properties must be set on an entity manager before executing a query. Do not change the properties for the lifespan of the entity manager. | Set additional criteria parameters through properties on the entity manager factory or on the entity manager. Properties set on the entity manager override identically named properties set on the entity manager factory. Properties must be set on an entity manager before executing a query. Do not change the properties for the lifespan of the entity manager. | ||
Line 61: | Line 62: | ||
Additional criteria are not supported with native queries. | Additional criteria are not supported with native queries. | ||
− | Specify additional criteria using the <code>@AdditionalCriteria</code> annotation or the <code> | + | Specify additional criteria using the <code>@AdditionalCriteria</code> annotation or the <code><additional-criteria></code> element. The additional criteria definition supports any valid JPQL string and must use <code>this</code> as an alias to form the additional criteria. For example: |
Line 72: | Line 73: | ||
package model; | package model; | ||
− | + | ||
@AdditionalCriteria("this.company=:COMPANY") | @AdditionalCriteria("this.company=:COMPANY") | ||
public class Employee { | public class Employee { | ||
Line 81: | Line 82: | ||
− | + | <additional-criteria> <criteria>this.address.city IS NOT NULL</criteria></additional-criteria> | |
− | + | <span id="sthref14"></span> | |
+ | |||
+ | '''Uses for Additional Criteria''' | ||
Uses for additional criteria include: | Uses for additional criteria include: | ||
Line 133: | Line 136: | ||
@AdditionalCriteria("this.endDate is null") | @AdditionalCriteria("this.endDate is null") | ||
− | + | <br /> | |
{| class="Note oac_no_warn" width="80%" border="1" frame="hsides" rules="groups" cellpadding="3" frame="hsides" rules="groups" | {| class="Note oac_no_warn" width="80%" border="1" frame="hsides" rules="groups" cellpadding="3" frame="hsides" rules="groups" | ||
| align="left" | | | align="left" | | ||
− | + | '''Note:''' | |
TopLink also provides specific history support, via <code>HistoryPolicy</code> . See Tracking Changes Using History Policy at <code>http://wiki.eclipse.org/EclipseLink/Examples/JPA/History</code>. | TopLink also provides specific history support, via <code>HistoryPolicy</code> . See Tracking Changes Using History Policy at <code>http://wiki.eclipse.org/EclipseLink/Examples/JPA/History</code>. | ||
|} | |} | ||
− | <br / | + | <br /> |
Temporal Filtering Example | Temporal Filtering Example | ||
Line 149: | Line 152: | ||
− | @AdditionalCriteria("this.startDate | + | @AdditionalCriteria("this.startDate <= :viewDate and this.endDate >= :viewDate") |
Shared Table Example | Shared Table Example | ||
Line 155: | Line 158: | ||
For a shared table, there may be inheritance in the table but not in the object model. For example, a SavingsAccount class may be mapped to an <code>ACCOUNT</code> table, but the <code>ACCOUNT</code> table contains both savings account data (<code>SAVINGS</code>) and checking account (<code>CHECKING</code>) data. You can use additional criteria to filter out the checking account data. | For a shared table, there may be inheritance in the table but not in the object model. For example, a SavingsAccount class may be mapped to an <code>ACCOUNT</code> table, but the <code>ACCOUNT</code> table contains both savings account data (<code>SAVINGS</code>) and checking account (<code>CHECKING</code>) data. You can use additional criteria to filter out the checking account data. | ||
− | + | <span id="sthref15"></span> | |
+ | |||
+ | '''Examples''' | ||
Line 162: | Line 167: | ||
Alternatively, you can include a few examples using <code>SegmentedList</code> <code>Role = Example</code>. | Alternatively, you can include a few examples using <code>SegmentedList</code> <code>Role = Example</code>. | ||
− | + | <span id="sthref16"></span> | |
+ | |||
+ | '''See Also''' | ||
− | |||
---- | ---- | ||
Line 174: | Line 180: | ||
| | | | ||
| align="center" | | | align="center" | | ||
− | [ | + | [[Annotations_Reference|[[Image:Larrow.gif|Previous]] Previous]] |
| align="center" | | | align="center" | | ||
− | [ | + | [[@Array|Next]] [[Image:Rarrow.gif|Next]] |
|} | |} | ||
| width="34%" align="center" | | | width="34%" align="center" | | ||
Line 184: | Line 190: | ||
| | | | ||
| align="center" valign="top" | | | align="center" valign="top" | | ||
− | [ | + | [[Table_of_Contents|[[Image:Conticon.gif|30px|Go To Table Of Contents]]<br /> Contents]] |
|} | |} | ||
|} | |} | ||
− | |||
− |
Revision as of 14:33, 29 May 2012
EclipseLink JPA Extensions Reference Guide Version 2.4.x |
|
@AdditionalCriteria
Use @AdditionalCriteria
to define parameterized views on data. You can define additional criteria on entities or mapped supercolossal. When specified at the mapped superclass level, the additional criteria definition applies to all inheriting entities, unless those entities define their own additional criteria, in which case those defined for the mapped superclass are ignored.
Annotation Elements
Table 2-1 describes this annotation's elements.
Table 2-1 @AdditionalCriteria Annotation Elements
Attribute | Description | Default |
---|---|---|
|
(Required) The JPQL fragment to use as the additional criteria. |
|
Usage
Set additional criteria parameters through properties on the entity manager factory or on the entity manager. Properties set on the entity manager override identically named properties set on the entity manager factory. Properties must be set on an entity manager before executing a query. Do not change the properties for the lifespan of the entity manager.
Additional criteria are not supported with native queries.
Specify additional criteria using the @AdditionalCriteria
annotation or the <additional-criteria>
element. The additional criteria definition supports any valid JPQL string and must use this
as an alias to form the additional criteria. For example:
@AdditionalCriteria("this.address.city IS NOT NULL")
The following example shows additional criteria defined for the entity Employee
and then shows the parameters for the additional criteria set on the entity manager.
Define additional criteria on Employee
, as follows:
package model; @AdditionalCriteria("this.company=:COMPANY") public class Employee { ... }
then set the property on the EntityManager
. This example returns all employees of MyCompany.
<additional-criteria> <criteria>this.address.city IS NOT NULL</criteria></additional-criteria>
Uses for Additional Criteria
Uses for additional criteria include:
Multitenancy Example
In a multitenancy environment, tenants (users, clients, organizations, applications) can share database tables, but the views on the data are restricted so that tenants have access only to their own data. You can use additional criteria to configure such restrictions.
Multitenancy Example 1
The following example restricts the data for a “Billing” client, such as a billing application or billing organization:
@AdditionalCriteria("this.tenant = 'Billing'")
Multitenancy Example 2
The following example could be used in an application used by multiple tenants at the same time. The additional criteria is defined as:
@AdditionalCriteria("this.tenant = :tenant")
When the tenant acquires its EntityManagerFactory
or EntityManager
, the persistence/entity manager property tenant is set to the name of the tenant acquiring it. For example,
Map properties = new HashMap(); properties.put("tenant", "ACME"); EntityManagerFactory emf = Persistence.createEntityManagerFactory(properties);
Or
Map properties = new HashMap(); properties.put("tenant", "ACME"); EntityManager em = factory.createEntityManager(properties);
Soft Delete Example
The following example filters data that is marked as deleted (but which still exists in the table) from a query:
@AdditionalCriteria("this.isDeleted = false")
Data History Example
The following example returns the current data from a query, thus filtering out any out-of-date data, for example data stored in a history table.
@AdditionalCriteria("this.endDate is null")
Note: TopLink also provides specific history support, via |
Temporal Filtering Example
The following example filters on a specific date::
@AdditionalCriteria("this.startDate <= :viewDate and this.endDate >= :viewDate")
Shared Table Example
For a shared table, there may be inheritance in the table but not in the object model. For example, a SavingsAccount class may be mapped to an ACCOUNT
table, but the ACCOUNT
table contains both savings account data (SAVINGS
) and checking account (CHECKING
) data. You can use additional criteria to filter out the checking account data.
Examples
Code
Alternatively, you can include a few examples using SegmentedList
Role = Example
.
See Also
|
|