Book Image

Java Hibernate Cookbook

By : Yogesh Prajapati, Vishal Ranapariya
Book Image

Java Hibernate Cookbook

By: Yogesh Prajapati, Vishal Ranapariya

Overview of this book

This book will provide a useful hands-on guide to Hibernate to accomplish the development of a real-time Hibernate application. We will start with the basics of Hibernate, which include setting up Hibernate – the pre-requisites and multiple ways of configuring Hibernate using Java. We will then dive deep into the fundamentals of Hibernate such as SessionFactory, session, criteria, working with objects and criteria. This will help a developer have a better understanding of how Hibernate works and what needs to be done to run a Hibernate application. Moving on, we will learn how to work with annotations, associations and collections. In the final chapters, we will see explore querying, advanced Hibernate concepts and integration with other frameworks.
Table of Contents (15 chapters)
Java Hibernate Cookbook
About the Authors
About the Reviewers

Executing a subquery using a criteria

In this recipe, we will take a look at how to use subquery. Here, we will do the same thing as before; we will use the DetachedCriteria class provided by the hibernate API. The DetachedCriteria class works in detached mode and is used to create a criteria query when the session is not available, as we can execute DetachedCriteria with the existing session object.

How to do it…

We will create one scenario to show how DetachedCriteria acts as a subquery.

The scenario is to get all the products whose categories have been recently added.

The preferred solution for this problem is as follows:

  • First, we will create DetachedCriteria to find the maximum createdOn date

  • Then, we will use the result of the first query to check the date of the product's category

Consider the following code:


/* Line 1 */ DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Category.class);
/* Line 2 */ detachedCriteria.setProjection(Projections.max("createdOn"));

/* Line 4...