2012-03-15 56 views
1

我想用Class.forName('com.mypack.MyDomain').newInstance() 從它的限定名創建一個grails域的實例。 但它拋出一個ClassNotFoundException. 我認爲這是因爲.forName('')期望該類是一個java類而不是groovy類? 如何在grails中完成這項工作,或者是否存在另一種方法來以字符串格式從類名創建域對象。從它的類名創建一個grails域類

感謝 Priyank

回答

8

另一條路線,試圖將做到:

GrailsDomainClass dc = grailsApplication.getDomainClass('com.mypack.MyDomain') 
def newDomainObject = dc.clazz.newInstance() 
+0

如何傳遞域的ID並從數據庫表中獲取特定的域對象?除此之外,我會這樣做,User user = User.get(id); – 2012-03-15 18:38:16

+0

我想newDomainObject.get(id)應該工作.. – 2012-03-15 18:41:12

+0

Afaik,'dc.get(id)'應該是你需要的 – 2012-03-15 18:57:03

1

嘗試

GrailsClass clazz = grailsApplication.getArtefactByLogicalPropertyName(DomainClassArtefactHandler.TYPE, className) 
clazz.clazz.newInstance() 
+0

所以我再次拿到類型GrailsClass的對象? – 2012-03-15 08:50:19

+0

不,請嘗試 - 這將是您的域類的類型的對象。您傳遞給getArtefactByLogicalPropertyName的類名稱 – 2012-03-15 09:49:37