Модель запросов Grails, содержащая набор перечислений

Мой класс домена

class RoomWantedAd{
    Set<MateAgeRange> mateAgeRanges
    static hasMany=[mateAgeRanges :MateAgeRange]
}

Ее MateAgeRange:

enum MateAgeRange {
    TWENTIES('18-29')
    ,THIRTIES('30-39')
    ,FOURTIES("40-49")
    ,FIFTIES("50-59")
    ,SIXTIES("60+")



final String value

private MateAgeRange(String value) {
    this.value = value
}

String toString() { value }
String getKey() { name() }


static belongsTo=[roomWanted:RoomWanted]
}

Моя проблема в поиске. На странице поиска человек может выбрать 0 или более значений в [18-29, 30-39, 40-49, 50-59, 60+]. В базе данных 0 или более значений из [18-29, 30-39, 40-49, 50-59, 60+] хранятся в поле mateAgeRanges. Пусть БД содержит [30-39, 50-59] в поле 'mateAgeRange'. Пусть на странице поиска пользователь выбирает [18-29, 50-59, 60+]. Затем должно быть возвращено объявление, соответствующее приведенному выше списку. Это связано с тем, что по крайней мере одно значение, выбранное пользователем, присутствует в списке БД. Как это возможно. Возможно ли использование SQL-запроса или запроса Grails GORM.


person Sajeev Zacharias    schedule 09.09.2014    source источник


Ответы (1)


вы должны использовать точно такой же тег <g:select/>, который вы используете для создания/обновления. Таким образом, вы увидите удобочитаемые значения, такие как THIRTIES в браузере, но в фоновом режиме будут использоваться значения '30-39'.

person injecteer    schedule 09.09.2014
comment
Пользовательский интерфейс страницы поиска в порядке. Пользовательский интерфейс и значения работают нормально. Мой вопрос касается запросов. Как решается эта проблема. - person Sajeev Zacharias; 09.09.2014
comment
не понимаю. Вы запрашиваете на основе данных, которые вы получаете из формы. Что еще вам нужно здесь? - person injecteer; 09.09.2014
comment
Я действительно хотел бы знать SQL-запрос, соответствующий этой проблеме. - person Sajeev Zacharias; 09.09.2014
comment
активировать ведение журнала sql в DataSource.groovy: hibernate { cache.use_second_level_cache = true cache.use_query_cache = false show_sql=true format_sql=true } - person injecteer; 09.09.2014