Bei der Deklaration einer Domänen-Klasse in Groovy wird auf die Bean-Notation für Variablen (Variable deklariert als private
, zusätzlich Getter und Setter) verzichtet. Stattdessen werden sogenannte Properties definiert, die durch Groovy intern in Java-Beans umgewandelt werden.
[groovy]
class MyTest {
Long id
String val1, val2
}
[/groovy]
Oftmals ist es nötig, die Liste der Properties auszulesen, etwa um ein Objekt in ein anderes zu mappen. Hierfür bietet Groovy die Methode getProperties()
:
[groovy]
def x = new MyTest()
x.properties.each { key, value ->
println “Property ${key}. ${value}”
}
[/groovy]
Hier tauchen aber plötzlich Properties auf, die in MyType
gar nicht definiert wurden, wie version, class, metaClass, constraints
! Grails Magic, hier wurden durch das Grails-Framework weitere Properties hinzugefügt!
Wie kommt man nun an die Liste nur der selbst definierten Properties? Die Antwort liegt bei den persistentProperties
, die in der Klasse liegen. Diese erreicht man über die DefaultGrailsDomainClass
.
[groovy]
def persistentProps = new DefaultGrailsDomainClass(MyTest.class).persistentProperties
persistentProps.each {
println “${it.name}”
}
[/groovy]
Et Voila: Die Liste der persistenten Properties, in aller Regel der selbstdefinierten.
Read Properties of a Grails Domain Class
With the declaration of a domain class in Groovy it is done without a Bean-Notation for variables (variable declared as private
, furthermore Getter and Setter). Instead so called properties are defined which are changed internally into Java-Beans by Groovy
[groovy]
class MyTest {
Long id
String val1, val2
}
[/groovy]
It is often necessary to read out the list, for example to map an object into another. Therefore Groovy offers the methode getProperties()
:
[groovy]
def x = new MyTest()
x.properties.each { key, value ->
println “Property ${key}. ${value}”
}
[/groovy]
At this points properties suddenly appear which haven’t been defined like version, class, metaClass, constraints
! Grails Magic, further properties have been added by the Grails-Framework!
So how do you get the list of the self defined properties only? The answer lies within the persistentProperties
, which are within the class. You can reach it via DefaultGrailsDomainClass
.
[groovy]
def persistentProps = new DefaultGrailsDomainClass(MyTest.class).persistentProperties
persistentProps.each {
println “${it.name}”
}
[/groovy]
Et Voila: The list of persistent properties, usually the self defined.