Реализация функциональности Query By Example в JPA - PullRequest
4 голосов
/ 20 ноября 2010

Знаете ли вы способ реализации чего-то вроде Hibernate QBE (Query by Example) в JPA?

Для моей проблемной области альтернативой его использования будет динамическое построение SQL-запроса с использованием каких-либо манипуляций со строками, чего я бы хотел избежать.

Я знаю, что это не поддерживаетсяпо умолчанию в API, но я считаю его отличным методом для построения динамических запросов.

Есть предложения?

Ответы [ 4 ]

9 голосов
/ 20 ноября 2010

QBE недоступен в JPA 1.0 или 2.0.Для более подробной информации смотрите здесь

8 голосов
/ 20 ноября 2010

В JPA 2.0 ближайший эквивалент называется Criteria API .В JPA 1.0 его не было.

Вот пример:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery c = cb.createQuery(Person.class);
Root person = c.from(Person.class);
c.select(person)
    .where(cb.equal(person.get("name"), "Officer Friendly"));
1 голос
/ 31 августа 2013

Я столкнулся с этой же проблемой некоторое время назад.

Я обнаружил, что использование JPA Criteria API было немного громоздким, поэтому я решил сделать абстракцию поверх него.

Это небольшая, гибкая и простая библиотека: https://github.com/kenglxn/QueryByExample

Надеемся, что она может быть полезна другим с этой же проблемой.

В тестовом примере есть несколько практических примеров: https://github.com/kenglxn/QueryByExample/blob/master/src/test/java/net/glxn/qbe/QBETest.java

0 голосов
/ 30 июля 2013

Давным-давно мне пришлось поцарапать это, и я решил сделать это сам.

вы можете получить его на sourceforge: svn: //svn.code.sf.net/p/jpaco/код / ​​jpaco-код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...