2013-04-09 73 views
0

所以我尝试做一个搜索功能。我使用Hibernates创建标准来尝试完成它。我正在搜索2个值。如果其中一个值为null,那么它将抛出异常,如果不是,它将继续在表中显示关于该搜索的所有信息。Hibernate的创建标准

def search(params) { 

def r = User.createCriteria() 

if (params.searchUsername != 'Enter a Username' && params.searchMPI != 'Enter a User Number') { 
    def number = params.searchNumber 
    def username = params.searchUsername 

    r = User.createCriteria() 


    def userList = r.list(max: params.max, offset: params.usersOffset) { 
     and { 
      ilike('username', '%' + username + '%') 
      ilike('number', '%' + number + '%') 
     } 
     order(params.usersSort, params.usersOrder) 
    } 
} 

这是我迄今为止的搜索功能。它搜索用户名和用户号码。几乎没有什么必须是与用户号码关联的用户名。如果其中一个出现为空,那么它将需要对我说,告诉我一个是空的。我一直在看这里的createCriteria信息http://grails.org/doc/2.2.x/ref/Domain%20Classes/createCriteria.html。它作为一个NULL方法。看起来,这只是搜索值为null。有没有一种方法可以将其实施到我的搜索中?

if ((ilike('username', '%'+ username) || ilike('number', '%' + number)) == (isNull('username') || isNull('number')){ 
     system.out.println("ONE OF THE VALUES IS NULL!") 

我想认为这会像这样工作。 ^不过它没有

我很新的这一切。因此,有建设性的批评表示赞赏= d

回答

0

为什么你提交这些字符串作为PARAMS?你有意这么做吗?而且,你确定这是一个AND条件?

它作为一种如果NULL方法。看起来,这只是搜索值为null。有没有一种方法可以将其实施到我的搜索中?

你能改写这个? (我不明白你正在尝试做的?)

+0

对不起,我的意思是。 Hibernate有一个isNull()方法。这种方法看起来像我可以使用,但我认为它只是查找值为null。 (但我不知道如果我完全理解它)。这个搜索是否为一个填充表。 非常多。我需要做的是检查这个从数据库填充的表格。该表格需要通过用户名和用户号码进行搜索。有两个搜索框,人员搜索将不得不放在用户名和号码。如果由于某种原因,其中一个参数在数据库中显示为空,则需要大声说出。 – CoffeePeddlerIntern 2013-04-09 15:20:15

+0

我认为你需要一个'或'条件,而不是'和'的标准 – DAJ 2013-04-12 21:45:55