Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

EclipseLink/UserGuide/JPA/Advanced JPA Development/NoSQL/Querying

EclipseLink JPA


Querying

Querying in NoSQL is dependent on the NoSQL platform. Some NoSQL data-sources may support dynamic querying through their own query language, others may not support querying at all.

JPQL and Criteria

EclipseLink does its best to support as much of JPQL and the Criteria API on a NoSQL platform as possible. Almost all NoSQL platforms allow querying by Id, so find() can be used to look-up objects by Id. Most NoSQL platforms also allow a find everything operation, this allows EclipseLink to support JPQL and Criteria queries that are by Id, or have no where clause.

For example:

SELECT o FROM ORDER o
SELECT o FROM ORDER o WHERE o.id = :id

MongoDB - JPQL and Criteria are supported with some restrictions. Joins, sub-selects, group by and certain database functions are not supported.

Oracle NoSQL - find() and JPQL and Criteria by Id or with no WHERE clause are supported.

Native Queries

Native SQL queries are not supported with NoSQL. Some NoSQL platforms may offer their own native query language, EclipseLink will allow JPA native queries using this language.

MongoDB - JPA native queries use the MongoDB native command language.

MongoDB native query example

Query query = em.createNativeQuery("db.ORDER.findOne({\"_id\":\"" + oid + "\"})", Order.class);
Order order = (Order)query.getSingleResult();



Eclipselink-logo.gif
Version: 2.4.0 DRAFT
Other versions...

Back to the top