Получить имена полей класса домена

Я хотел бы получить имена полей класса и, возможно, сохранить его в списке. Кто-нибудь может помочь? Благодарю.

4 ответа

Вы можете попробовать это, чтобы получить имена полей класса домена.

YourClass.declaredFields.each {
  if (!it.synthetic) {
    println it.name
  }
}

Вы можете использовать gormPersistentEntity для любого объекта домена, это работает как минимум с Grails 2.4.4:

def names = Person.gormPersistentEntity.persistentPropertyNames
//returns ['firstName', 'lastName'...]

Вы также можете получить естественное имя, используя GrailsNameUtils, например так:

def naturalNames = Person.gormPersistentEntity.persistentPropertyNames.collect {
        grails.util.GrailsNameUtils.getNaturalName(it)
}
//returns ['First Name', 'Last Name'...]

def capitilizedNames = Person.gormPersistentEntity.persistentProperties.collect{
    it.capitilizedName
}
//returns ['FirstName', 'LastName'...]

Только что выяснил, это работает:

def names = grailsApplication.getDomainClass('com.foo.Person').persistentProperties.collect { it.name }

Вы можете перебирать поля такого класса.

YourClass.fields.each { println it.name }

Если вам нужно поместить их в список, вы можете использовать collect() или заполнить его внутри каждого.

http://groovy.codehaus.org/JN3535-Reflection

Другие вопросы по тегам