Document Information

Preface

Part I Introduction

1.  Overview

2.  Using the Tutorial Examples

Part II The Web Tier

3.  Getting Started with Web Applications

4.  JavaServer Faces Technology

5.  Introduction to Facelets

6.  Expression Language

7.  Using JavaServer Faces Technology in Web Pages

8.  Using Converters, Listeners, and Validators

9.  Developing with JavaServer Faces Technology

10.  JavaServer Faces Technology Advanced Concepts

11.  Configuring JavaServer Faces Applications

12.  Using Ajax with JavaServer Faces Technology

13.  Advanced Composite Components

14.  Creating Custom UI Components

15.  Java Servlet Technology

16.  Internationalizing and Localizing Web Applications

Part III Web Services

17.  Introduction to Web Services

18.  Building Web Services with JAX-WS

19.  Building RESTful Web Services with JAX-RS

20.  Advanced JAX-RS Features

21.  Running the Advanced JAX-RS Example Application

Part IV Enterprise Beans

22.  Enterprise Beans

23.  Getting Started with Enterprise Beans

24.  Running the Enterprise Bean Examples

25.  A Message-Driven Bean Example

26.  Using the Embedded Enterprise Bean Container

27.  Using Asynchronous Method Invocation in Session Beans

Part V Contexts and Dependency Injection for the Java EE Platform

28.  Introduction to Contexts and Dependency Injection for the Java EE Platform

29.  Running the Basic Contexts and Dependency Injection Examples

30.  Contexts and Dependency Injection for the Java EE Platform: Advanced Topics

31.  Running the Advanced Contexts and Dependency Injection Examples

Part VI Persistence

32.  Introduction to the Java Persistence API

33.  Running the Persistence Examples

Query Language Terminology

Creating Queries Using the Java Persistence Query Language

Named Parameters in Queries

Positional Parameters in Queries

Simplified Query Language Syntax

Select Statements

Update and Delete Statements

Example Queries

Simple Queries

A Basic Select Query

Eliminating Duplicate Values

Using Named Parameters

Queries That Navigate to Related Entities

A Simple Query with Relationships

Navigating to Single-Valued Relationship Fields

Traversing Relationships with an Input Parameter

Traversing Multiple Relationships

Navigating According to Related Fields

Queries with Other Conditional Expressions

The LIKE Expression

The IS NULL Expression

The IS EMPTY Expression

The BETWEEN Expression

Comparison Operators

Bulk Updates and Deletes

Update Queries

Delete Queries

Full Query Language Syntax

BNF Symbols

BNF Grammar of the Java Persistence Query Language

FROM Clause

Identifiers

Identification Variables

Range Variable Declarations

Collection Member Declarations

Joins

Path Expressions

Examples of Path Expressions

Expression Types

Navigation

WHERE Clause

Literals

Input Parameters

Conditional Expressions

Operators and Their Precedence

BETWEEN Expressions

IN Expressions

LIKE Expressions

NULL Comparison Expressions

Empty Collection Comparison Expressions

Collection Member Expressions

Subqueries

Functional Expressions

Case Expressions

NULL Values

Equality Semantics

SELECT Clause

Return Types

The DISTINCT Keyword

Constructor Expressions

ORDER BY Clause

GROUP BY and HAVING Clauses

35.  Using the Criteria API to Create Queries

36.  Creating and Using String-Based Criteria Queries

37.  Controlling Concurrent Access to Entity Data with Locking

38.  Improving the Performance of Java Persistence API Applications By Setting a Second-Level Cache

Part VII Security

39.  Introduction to Security in the Java EE Platform

40.  Getting Started Securing Web Applications

41.  Getting Started Securing Enterprise Applications

Part VIII Java EE Supporting Technologies

42.  Introduction to Java EE Supporting Technologies

43.  Transactions

44.  Resource Connections

45.  Java Message Service Concepts

46.  Java Message Service Examples

47.  Advanced Bean Validation Concepts and Examples

48.  Using Java EE Interceptors

Part IX Case Studies

49.  Duke's Tutoring Case Study Example

Index

 

Chapter 34
The Java Persistence Query Language

The Java Persistence query language defines queries for entities and their persistent state. The query language allows you to write portable queries that work regardless of the underlying data store.

The query language uses the abstract persistence schemas of entities, including their relationships, for its data model and defines operators and expressions based on this data model. The scope of a query spans the abstract schemas of related entities that are packaged in the same persistence unit. The query language uses an SQL-like syntax to select objects or values based on entity abstract schema types and relationships among them.

This chapter relies on the material presented in earlier chapters. For conceptual information, see Chapter 32, Introduction to the Java Persistence API. For code examples, see Chapter 33, Running the Persistence Examples.

The following topics are addressed here: