2010-07-07 95 views
4

我試圖用Spring Roo來生成具有@OneToMany單向關係的實體。以下是我已經試過:帶有Spring Roo的@OneToMany註釋問題

entity --class ~.family.Child 
field string --fieldName name 
controller scaffold ~.web.ChildController 
entity --class ~.family.Father 
field string --fieldName name 
field set --fieldName children --element ~.family.Child --cardinality ONE_TO_MANY 
controller scaffold ~.web.FatherController 
perform package 

這將產生預期的實體和數據庫表與下面的註解,這符合JPA規範所產生的Father實體(包括鏈接表。):

@OneToMany(cascade = CascadeType.ALL) 
private Set<family.Child> message = new java.util.HashSet<family.Child>(); 

但是當我去袋鼠生成的管理頁面,並單擊Create Father,我發現下面的消息:

創建父

Name:  (field to enter name) 
Children: This relationship is managed from the Father side. 

這看起來像Roo中的一個bug。有沒有人找到解決辦法?或者我在這裏有錯誤?

+0

只是爲了好奇:春天roo是否按預期工作?它充分滿足您的需求嗎? – 2010-07-08 18:08:11

+0

到目前爲止,我對Roo很滿意,但我只用了幾個星期,而且我很缺乏經驗,所以沒有太多的期望。 – 2010-07-09 09:44:35

回答

6

OK,這裏有一個解決方法:在fathers/create.jspx文件,小豆產生以下行:

<field:simple field="children" id="c:family.Father.children" messageCode="entity.reference.not.managed" 
messageCodeAttribute="Child" z="dMKrUOiCeYNub4vNayuiWJ99s1k="/> 

這應改爲:

<field:select field="children" id="c:family.Father.children" itemValue="id" 
items="${children}" multiple="true" path="/children"/> 

,它應該工作。

+0

謝謝..我自己正在嘗試它..但它沒有工作..我看着春天roo jira但沒有發現它的任何錯誤.. – Shekhar 2010-07-07 21:19:35

+0

很高興能夠提供幫助。 – 2010-07-08 13:02:40

+0

這隻適用於顯示孩子。如果您更新或創建對象,則不會保存引用。 該怎麼辦? – Hedge 2011-10-13 14:38:07

0

是的,這可能是一個錯誤!

我有相同的命令。它使用舊版本的Roo,但我嘗試了一箇舊的備份腳本。它沒有更多的工作。