2010-07-07 136 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,但我尝试了一个旧的备份脚本。它没有更多的工作。