41

Supponiamo che una semplice classe Grails dominio:Grails Classe dominio: vincolo univoco per più colonne

class Account { 
    String countryId; 

    String userName; 

    String password; 

    static constraints = { 
     ...???... 
    } 
} 

E 'necessario che i nomi utente sono unici per un particolare countryID, quindi ci deve essere un unico contraint su due colonne. Come esprimerlo nella definizione ?

+4

stavo navigando nel web e, in particolare, StackOverflow senza trovare una risposta. Alla fine, ho trovato la soluzione nel [riferimento Grails] (http://grails.org/doc/1.0.x/ref/Constraints/unique.html) sebbene tutti gli altri esempi di documentazione di Grails contengano solo il caso di una singola colonna. Non sapevo che l'auto-risposta non è consentita entro 8 ore – rainer198

risposta

73
userName(unique: ['countryId']) 

È possibile includere come molte altre proprietà nella matrice che compongono le altre proprietà che devono essere considerati nel vincolo "unico" sul nome utente.

Così, per esempio, se si voleva fare userName univoco all'interno di un countryId e provinceId sarebbe simile a questa:

userName(unique: ['countryId', 'provinceId'] 
+1

si rock con grails –

+0

In grails 3 è scritto "userName unique: 'countryId'" http://docs.grails.org/latest/ref/Constraints /unique.html –

+2

@CarlosParraga è solo una variante della stessa cosa. La stessa sintassi può essere utilizzata anche con versioni di Grails precedenti alla 3.x. –