Search code examples
grailsgrails-orm

Grails 3.2 - List field names in domain class that are not nullable


How can I get a list of field names for a domain class that are not nullable?

For instance, in the following domain:

class MyDomain {
    String field1
    String field2
    String field3
    String field4

    static constraints = {
        field2 nullable: true
        field3 nullable: true
    }
}

How can I get back the list ['field1','field4'] in a controller?

I'm validating rows in a CSV, and some of the row information is different from what is stored in the domain, so it would be preferable to get a List of String names rather than bind to a command object with exclusions.


Solution

  • You can use the constrainedProperties. It gives all the constraints of the particular domain class.

    And now you want only the non-nullble constraints then filter out the result for it.

    Example :

    MyDomain.constrainedProperties.findResults { it.value.nullable ? null : it.key }
    

    Output :

    ['field1','field4']
    

    For grails 2.x users :

    MyDomain.getConstraints().findResults { it.value.nullable ? null : it.key }