Учебное пособие по критериям JPA

Я пытался найти учебник по JPA Criteria API, но безуспешно. Знаете ли вы о каких-либо для начинающих? Я хотел бы начать использовать его в приложении Java5/Maven для создания сложных поисковых запросов.


person John Manak    schedule 22.10.2010    source источник
comment
Коэффициент корреляции между не по теме и полезностью == 1,0   -  person HDave    schedule 30.11.2014


Ответы (4)


Очень хорошая статья Динамические запросы с безопасным типом в JPA 2.0. по этой теме, на самом деле лучший из тех, что я нашел онлайн, даже лучше, чем Глава 23 Использование Criteria API для создания запросов из руководств по Java EE 6 (содержащая некоторые ошибки).

person Pascal Thivent    schedule 22.10.2010
comment
Ссылка @HDave Oracle EE7 на Criteria API была изменена на https://docs.oracle.com/javaee/7/tutorial/persistence-criteria.htm#GJITV - person skomisa; 03.01.2015

Примеры общих запросов приведены здесь

Все примеры в таком виде:

CriteriaBuilder cb = em.getCriteriaBuilder();

// Query for a List of objects.
CriteriaQuery cq = cb.createQuery();
Root e = cq.from(Employee.class);
cq.where(cb.greaterThan(e.get("salary"), 100000));
Query query = em.createQuery(cq);
List<Employee> result = query.getResultList();

Если вы также рассматриваете другие технологии, вам следует серьезно рассмотреть querydsl. Основные преимущества по сравнению с критериями включают более короткий код, хорошую читаемость и синтаксис, аналогичный обычному sql.

Пример кода QueryDSL здесь:

JPAQuery query = new JPAQuery(entityManager);
List<Person> persons = query.from(person)
  .where(
    person.firstName.eq("John")),        
  .list(person);
person Marcin Szymczak    schedule 25.03.2014
comment
ваш первый пример не выдает явного выбора, а неявный не может быть определен. - person Irakli; 03.12.2016
comment
.where( открытая здесь скобка не закрывается. - person Alex78191; 23.01.2018

Pro JPA 2: освоение Java Persistence API http://books.google.com/books?id=j84hdeHH2PYC

Это источник, который я считаю наиболее полезным.

person John Manak    schedule 22.10.2010