ale*_*der 2 java hibernate if-statement conditional-statements hibernate-criteria
我正在尝试实现Hibernate全文搜索.用户可以选择哪些字段与搜索相关.这是由JSF中的六个(我的示例)布尔复选框完成的.
六个布尔值意味着2 ^ 6种可能的组合.我需要映射所有这些条件.
例:
boolean a;
boolean b;
boolean c;
boolean d;
boolean e;
boolean f;
if(a){
// do a search with a
}
..
if(a && b){
// do a search with a and b only
}
..
if(a && b && c){
// do a search with a and b and c only
}
Run Code Online (Sandbox Code Playgroud)
在每个IF语句中,都应该调用一个方法.
基于我的案例的部分示例:
用户想要搜索具有姓氏和/或名称的用户.
org.apache.lucene.search.Query luceneQuery = qb.keyword()
.onFields("user.surname", "user.givenname")
.matching(searchstring).createQuery();
Run Code Online (Sandbox Code Playgroud)
Conditonally:
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(BeitragVO.class).get();
if(user){
org.apache.lucene.search.Query luceneQuery = qb.keyword()
.onFields("user.surname", "user.givenname")
.matching(searchstring).createQuery();
}
if(company){
org.apache.lucene.search.Query luceneQuery = qb.keyword()
.onField("company.name")
.matching(searchstring).createQuery();
}
if(student && company){
// How can I add all relevant fields(givenname, surname, and name of
company) to the query?
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更好地做到64 IF?
您可以像这样制作代码:
String search = "";
if(a){
search += ...
}
..
if(b){
search += ...
}
..
if(c){
search += ...
}
Run Code Online (Sandbox Code Playgroud)
只需通过每个复选框自选择添加任何SQL查询(条件)代码,然后运行它
| 归档时间: |
|
| 查看次数: |
2422 次 |
| 最近记录: |