2016-11-14 2 views
0

Как проверить, находится ли значение между двумя столбцами базы данных?Grails withCriteria, значение между двумя столбцами базы данных?

мне нужно сделать что-то вроде этого:

between(column1, column2, 'value') 

или что-то вроде этого:

or{ 
    and { 
     ge("hora_inicio", evento.hora_inicio) 
     le("hora_fim", evento.hora_inicio) 
     } 
    and { 
     ge("hora_inicio", evento.hora_fim) 
     le("hora_fim", evento.hora_fim) 
     } 
    } 

любые Ideias?

Спасибо!

ответ

2

Невозможно проверить, что два столбца находятся между значением. Вам нужно будет сделать два отдельных сравнения. Вы можете сравнить один столбец базы данных с другим, но он не видит, как это то, что вы хотите. См. Документацию по этому вопросу: http://docs.grails.org/latest/ref/Domain%20Classes/createCriteria.html

Из вашего второго примера, похоже, вам нужно найти все записи, в которых есть время начала между evento.hora_inicio и evento.hora_fim или у которых есть время заказа между evento.hora_inicio и evento.hora_fim.

Похоже, что это может быть упрощено для поиска всех записей, которые имеют hora_inicio перед evento.hora_fim и имеют hora_fim после evento.hora_inicio. Это выглядело бы примерно так:

Event evento = getEventFromSomewhere() 
Appointment.createCriteria().list{ 
    le 'hora_inicio', evento.hora_fim 
    ge 'hora_fim', evento.hora_inicio 
} 
+0

Это то, что я хотел, спасибо! – xSlok