2016-11-14 2 views
0

Comment puis-je tester si une valeur est entre deux de mes colonnes de base de données?Grails withCriteria, valeur entre deux colonnes de base de données?

que je dois faire quelque chose comme ceci:

between(column1, column2, 'value') 

ou quelque chose comme ceci:

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) 
     } 
    } 

tout ideias?

Merci!

Répondre

2

Il n'existe aucune option pour vérifier que deux colonnes sont entre une valeur. Vous allez devoir faire deux comparaisons séparées. Vous pouvez cependant comparer une colonne de base de données à une autre, mais elle ne voit pas que c'est exactement ce que vous voulez. Dans votre deuxième exemple, il semble que vous ayez besoin de trouver toutes les entrées qui ont une heure de début entre evento.hora_inicio et evento.hora_fim ou qui ont un temps de commande entre evento.hora_inicio et evento.hora_fim.

On a l'impression que cela peut être simplifié pour rechercher toutes les entrées qui ont un hora_inicio avant le evento.hora_fim et un hora_fim après le evento.hora_inicio. Cela ressemblerait à quelque chose comme ceci:

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

c'est exactement ce que je voulais, merci! – xSlok