2012-11-15 236 views
0

我是新來的Grails和我有這個簡單的類的應用程序:更新領域

class Person{ 
String name 
} 

class Voter{ 
String voteAddress 
String counter 
Person person 
} 

現在,我試圖更新領域的人只有選民類。現在我有下面的代碼,它不工作,我知道這是錯誤的,但我想它反正:

def updatePersonFieldOnly{ 
def voterInstance = Voter.get(params.id) 
voterInstance.properties=params 

def personInstance = Voter.findById(12) 

voterInstance.person = personInstance 

......some other code to update 
..... 
} 

現在,動作執行的時候,我得到這個錯誤:

無法將屬性值轉換將java.lang.String類型轉換爲所需類型proj.Person用於屬性person;嵌套異常是java.lang.IllegalStateException:無法將屬性人類的[java.lang.String]類型值轉換爲所需類型[proj.Person]:沒有匹配的編輯器或找到轉換策略

我仍在路上閱讀Grails的文檔。那麼誰能幫我解決這個問題?謝謝。

回答

0

看起來你在params地圖中有一個名爲「person」的屬性,Grails試圖將其轉換爲「Person」對象。嘗試將該字段更改爲「person.id」,Grails應自動獲取與該id對應的Person對象,並將其匹配到「person」對象。

有關更多信息,請參閱DataBinding下的「數據綁定和單端關聯」部分。

+0

好的,謝謝,結果我只需要重新命名參數,並且上面的代碼不再需要。謝謝。 – noob