2012-11-14 25 views
0

是否有某種方法以相同的順序檢索域類的持久屬性,我在類中聲明它們?按順序獲取Grails域持久性屬性

class MyDomainClass { 
    String prop1 
    String prop2 
    String prop3 
} 


def domainClass = grailsApplication.getDomainClass(MyDomainClass) 
def props = domainClass.persistentProperties //this not retrieve them in order. 
+0

可能的重複http://stackoverflow.com/questions/11150476/grails-getproperties-method-does-not-always-return-properties-in-the-correct-ord – doelleri

+0

@doelleri我沒有看到在相關的問題:)這是一個有趣的方法,但沒有在約束中聲明的字段默認是必需的,所以這打破了使用'grails.gorm.default.constraints'的點。如果沒有別的辦法,這是付出的代價。 –

回答

1

類別:getDeclaredFields完成這項工作。一旦由Oracle的javac 7編制,並通過Oracle的JVM 7上運行,你會得到的結果,但我不認爲你肯定可以得到它的明天:

「返回的是數組中的元素沒有排序,並沒有在任何 特定順序「。

class MyDomainClass { 
    String name 
    String hobby 
    int age 
} 
MyDomainClass.class.getDeclaredFields().each { println it.name } 

輸出:

name 
hobby 
age 
$staticClassInfo 
__$stMC 

反正這一切都不算太好。可以使用提供訂購信息的註釋。

+0

既然你指出它可能沒有排序,我認爲約束方法比這更好,因爲它允許開發者設置順序。唯一的配置是開發人員記得設置所有字段。爲此,我將在列表的最後添加未聲明的內容。謝謝回答! –