Hibernate Tips: How to select a POJO with a Criteria Query

By Thorben Janssen

Criteria API, Query

Hibernate Tips is a series of posts in which I describe a quick and easy solution for common Hibernate questions. If you have a question you like me to answer, please leave a comment below.

Question:

How can I select a POJO with a Criteria Quey similar to a JPQL query?

Solution:

You can use a similar constructor expression with the Criteria API as you use in JPQL queries. The following code snippet shows an example of it.

You can see the definition of the constructor call in line 4. The construct(Class resultClass, Selection… selection) method of the CriteriaBuilder tells your JPA implementation to call the constructor of the AuthorValue class with a set of parameters. It does that for each record of the result set. In this example, I use the JPA Metamodel to reference the first name and last name as constructor parameters.

Learn More:

If you don’t want to create a POJO to represent your query result, you can also select a set of scalar values. You can learn more about it in my Hibernate Tip: How to select multiple scalar values in a Criteria Query.

And if you want to learn more about creating type-safe, programmatic queries with the Criteria API, you should have a look at my Advanced Hibernate Online Training. It has a whole module about the Criteria API and I also show other, advanced options to query your data.
 

Hibernate Tips Book


Get more recipes like this one in my new book Hibernate Tips: More than 70 solutions to common Hibernate problems.

It gives you more than 70 ready-to-use recipes for topics like basic and advanced mappings, logging, Java 8 support, caching and statically and dynamically defined queries.

Get it now as a paperback, ebook or PDF.


Tags

Criteria API, Query


About the author

Thorben is an independent consultant, international speaker, and trainer specialized in solving Java persistence problems with JPA and Hibernate.
He is also the author of Amazon’s bestselling book Hibernate Tips - More than 70 solutions to common Hibernate problems.

Books and Courses

Coaching and Consulting

Leave a Repl​​​​​y

Your email address will not be published. Required fields are marked

This site uses Akismet to reduce spam. Learn how your comment data is processed.

    1. You can’t select a POJO projection that contains a List of attributes. You can do 2 things:

      1. Select the POJO without the List and execute an additional query for each POJO to get the List. This creates an n+1 select issue and only works, if you don’t select too many POJOs.
      2. Select all required information in 1 query and provide your own code to map these records to the POJO.
{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}