2

J'essaie d'écrire des formules dans mon cours de domaine, ce qui m'aide à créer des critères.Comment définir la formule dans la classe de domaine grails?

class MyClass { 
    //some fields 
    Date appointmentTime 
    String ddmmyy 
    int year 
    int month 
    int day 
    static transients = [ 
     'ddmmyy', 
     'year', 
     'month', 
     'day' 
    ] 
    static mapping= { 
     ddmmyy formula('DATE_FORMAT(appointmentTime)') 
     year formula('YEAR(appointmentTime)') 
     month formula('MONTH(appointmentTime)') 
     day formula('DAYOFMONTH(appointmentTime)') 
    } 
} 

Chaque fois que je suis en train d'utiliser ces champs dans mes critères, il jette l'erreur ne peut pas dire résoudre la propriété « ddmmyy » de « myClass ».

myCriteria est:

Date myDate = Calender.instance.time 

def results = MyClass.createcriteria().list{ 
    lt('appointmentTime', date+1) 
    ge('appointmentTime', date) 
    projections { 
     groupProperty('ddmmyy') 
     count('id') 
    } 
} 

Toute idée pourquoi je me fais une exception pour cela?

+0

Notez que la formule exprimée dans la DSL ORM est SQL si les références à d'autres propriétés doivent se rapporter au modèle de persistance et non le modèle d'objet, ce qui est la raison pour laquelle l'exemple est erroné étant qu'il se réfère à RDT et non APPOINTMENT_TIME –

Répondre

2

Vous devez rendre ces champs non transitoires à utiliser dans les critères. Voir le document de référence

http://www.grails.org/doc/latest/guide/GORM.html#5.5.2.11%20Derived%20Properties

+0

Voulez-vous dire que ces champs seront persistants avec DB? – sanghavi7

+1

Les propriétés dérivées ne sont pas conservées, du moins pas directement. Voir http://grails.org/doc/latest/guide/GORM.html#derivedProperties. –

+1

Non il ne sera pas si c'est une propriété dérivée, mais il doit être non transitoire pour être utilisé par des critères ou un chercheur dynamique. –

Questions connexes