0

所以我试图做一个搜索功能。我正在使用 Hibernates Create Criteria 来尝试完成它。我按 2 个值搜索。如果其中一个值为 null,那么它将引发异常,如果不是,它将继续在表中显示有关该搜索的所有信息。

    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。它作为一个 if NULL 方法。但是,这似乎只是搜索为空的值。有没有办法可以在我的搜索中实现它?

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

我想这会像这样工作。^ 但事实并非如此

我对这一切都很陌生。所以建设性的批评是值得赞赏的=D

4

1 回答 1

0

你为什么将这些字符串作为参数提交?你是故意的吗?而且,您确定这是一个 AND 条件吗?

它作为一个 if NULL 方法。但是,这似乎只是搜索为空的值。有没有办法可以在我的搜索中实现它?

你能改写一下吗?(我不明白你想做什么?)

于 2013-04-09T15:12:43.937 回答