HQL-запрос в Grails для LIKE - PullRequest
       10

HQL-запрос в Grails для LIKE

0 голосов
/ 14 октября 2011

Я хочу знать, может ли HQL обрабатывать запрос, такой как следующий

"найти значения LIKE" abc "или" def "или ... в столбце 1, столбце 2 или таблице 1"

Итак, у меня есть несколько параметров, и я хочу найти в двух столбцах подстановочный знак для любого значения параметра.

Я делаю grails, и если предпочтительнее, хотел бы использовать функцию executeQuery, но не уверен, как написать эту.

Ответы [ 2 ]

1 голос
/ 17 октября 2011

Я бы рекомендовал вместо этого использовать критерий запроса:

def criteria = Table1.createCriteria()

def results = criteria.listDistinct {
    or {
        or {
            like('column1', "%abc%")
            like('column1', "%def%")
        }

        or {
            like('column2', "%abc%")
            like('column2', "%def%")
        }
    }
}

Если вы не хотите исключать дубликаты, замените listDistinct на list.Я не проверял вышеизложенное, так что, вероятно, оно изобилует ошибками, но, надеюсь, окажется полезным.

1 голос
/ 14 октября 2011

Вы можете применить любое из выражений HQL к вашему запросу. Например:

from Table1 where column1 like :param1 or column2 like :param2

Однако вы должны применить оператор % в самих параметрах.


Вы также можете выполнить свой запрос, используя построитель критериев GORM с ограничениями критерия Hibernate :

Table1.withCriteria {
    like('column1', param1)
    or {
        like('column2', param2)
    }     
}
...