簡體   English   中英

如何在hql中使用相同關鍵字的兩個字段上執行搜索操作?

[英]How to perform search operation on two fields with same keyword in hql?

如果數據庫中的任何字段為空(無論公司名稱還是位置),我都不會得到記錄。 keyword是我從表單輸入的內容。

這是我的查詢:

Query qry=session.createQuery("select distinct company_name from Company_Info where company_name like '%"+keyword+"%' or  locations.city like '%"+keyword+"%'");

有人知道如何進行這項工作嗎?

由於您必須在HQL中使用null,因此(如果存在具有潛在電位的參數。)請使用以下命令:

String keywordTerm = keyword==null ? "is null" : "= :keyword";

Query qry=session.createQuery("select distinct company_name from Company_Info where company_name like '%"+keyword+"%' or  locations.city like '%"+keyword+"%'");

if(keyword!=null){
    qry.setParameter("keyword", keyword, Hibernate.STRING)
}

我通過使用Apache Lucene搜索獲得了成功,對我來說很有效:

FullTextSession fullTextSession = Search.getFullTextSession(session);
fullTextSession.createIndexer(Company_Info.class).startAndWait();

QueryBuilder qb = fullTextSession.getSearchFactory()
    .buildQueryBuilder().forEntity(Company.class).get();
org.apache.lucene.search.Query query = qb.keyword()
        .onFields("company_name","locations.city")
        .matching(keyword)
    .createQuery();

org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery(query, Company_Info.class);

List<Company_Info> result = hibQuery.list();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM