Skip to main content

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.

Jump to: navigation, search

EclipseLink/Development/JPA 2.0/entity type expressions

Entity Type Expression

JPA 2.0 Root | bug 252009

Issue Summary

JPA 2.0 introduces JPQL expressions that allow a query to restrict results based on class types. This feature will require functionality to be added to EclipseLink.

See JPA 2.0 section 4.4.8 and 4.4.9 for details.

General Solution

Expression Support will be required that can provide a comparison with an extracted discriminator value.

Native Expression Support

through EclipseLink Enhancement 277509 1)ReportQuery will need return Class objects that the Type expression correlates to 2) Type expressions need to be supported that take parameters and constants representing Java Classes that will evaluate to String/Int values used in these class's inheritance policy fields 3) Type expresions also need to operate on expressions representing relationships and entities, allowing them all to be compared

Public API

*
public Expression getClassForInheritance()

returns a Type expression operating on the base expression. The base expression must be an ObjectExpression. Examples:

expressionBuilder.get("project").getClassForInheritance().equals(LargeProject.class)

Open Issues

Method name for the public expression api.  The getClassForInheritance() used above was arbitrarily picked because getType() is difficult to interpret when reading expression code.  Other options might be getEntityType() or getClassType().
 

Work Required

  1. Develop model for testing
    approx 1 day
  2. Update Processing
    approx 6 days - creating expression support: EclipseLink Enhancement 277509
    approx 3 days - updating Parser

Back to the top