多个搜索字段

时间:2010-04-14 19:12:23

标签: java sql openjpa

如果我的搜索字段数为20或更多且任何组合都应该有效,那么最佳方法是什么。有没有什么特别的方法可以在openJPA中完成,或者本机SQL更好。任何想法都会有所帮助。谢谢。

4 个答案:

答案 0 :(得分:1)

您可以在存储过程或参数化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)

答案 1 :(得分:0)

我认为您可能希望使用“Hibernate Search”之类的东西,它将全文搜索引擎的强大功能带入数据库模型。因此,您可以提供类似Google搜索功能,以执行客户想要执行的任何搜索组合。

我开发了一个带有GUI的演示应用程序来测试各种查询类型。

退房 - http://code.google.com/p/hb-search-demo/

答案 2 :(得分:0)

我相信使用标准api是最好的前进方式。

请阅读该链接并检查您自己的链接:

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

答案 3 :(得分:0)

我不喜欢通过SQL运行全文搜索。对于喜欢使用像Solr这样的搜索引擎的东西。

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

概述其功能:

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