I propose a utility class {{CriteriaDefinition}} that makes it easier to write criteria queries.
Instead of:
{code:java}var builder = sessionFactory.getCriteriaBuilder(); var query = builder.createQuery(Book.class); var book = query.from(Book.class); query.where(builder.like(book.get(Book_.title), "%Hibernate%")); query.orderBy(builder.desc(book.get(Book_.publicationDate)), builder.asc(book.get(Book_.isbn))); book.fetch(Book_.authors); List<Book> books = session.createSelectionQuery(query) .setMaxResults(10) .getResultList();{code}
You can write:
{code:java} List<Book> books = new CriteriaDefinition<>(session, Book.class) { public void define() { var book b = from(Book.class); where(like( book b .get(Book_.title), "%Hibernate%")); orderBy(desc( book b .get(Book_.publicationDate)), asc( book b .get(Book_.isbn))); book b .fetch(Book_.authors); } } .createSelectionQuery() .setMaxResults(10) .getResultList(); {code}
WDYT? |
|