несколько полей поиска - PullRequest
0 голосов
/ 14 апреля 2010

Какой будет наилучший подход, если у меня есть поля поиска для 20 или более, и любая комбинация должна быть действительной. Есть ли какой-нибудь особый способ сделать это в openJPA или лучше родной SQL. Любая идея будет полезна. Спасибо.

Ответы [ 4 ]

1 голос
/ 14 апреля 2010

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

@param1 varchar(25),
@param2 int,
@param3 varchar(10),
@param4 char(1)

SELECT column1, column2, column3, column4
FROM TABLE
WHERE (column1 = @param1 OR @param1 IS NULL)
AND (column2 = @param2 OR @param2 IS NULL)
AND (column3 = @param3 OR @param3 IS NULL)
AND (column4 = @param4 OR @param4 IS NULL)
0 голосов
/ 14 апреля 2010

Я считаю, что использование критериев api - лучший путь вперед.

Пожалуйста, прочитайте эту ссылку и проверьте свои:

http://openjpa.apache.org/builds/2.0.0-beta3/apache-openjpa-2.0.0-beta3/docs/manual/jpa_overview_criteria.html

0 голосов
/ 14 апреля 2010

Мне не нравится выполнять полнотекстовый поиск через SQL. Для таких вещей, как использовать поисковик, как Solr.

http://lucene.apache.org/solr/

обзор его возможностей:

http://lucene.apache.org/solr/features.html

0 голосов
/ 14 апреля 2010

Я думаю, вы, возможно, захотите использовать что-то вроде «Hibernate Search», который привносит мощь полнотекстовых поисковых систем в модель БД. Таким образом, вы можете предоставить функцию, подобную функции поиска Google, для выполнения любой комбинации поиска, которую хотят выполнять ваши клиенты.

Я разработал демонстрационное приложение с графическим интерфейсом для тестирования различных типов запросов.

Выезд - http://code.google.com/p/hb-search-demo/

...