4

我正在尝试使用 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

这将生成预期的实体和数据库表(包括链接表)。该Father实体使用以下注释生成,符合 JPA 规范:

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

但是当我转到 Roo 生成的管理页面并单击Create Father时,我发现以下消息:

创建父亲

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

这看起来像 Roo 中的一个错误。有没有人找到解决方法?还是我这里有错误?

4

2 回答 2

6

好的,这是一个解决方法:在fathers/create.jspx文件中,Roo 生成以下行:

<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"/>

它应该工作。

于 2010-07-07T20:58:05.643 回答
0

是的,这可能是一个错误!

我有同样的命令。它适用于旧版本的 Roo,但我尝试了旧的备份脚本。它不再起作用了。

于 2011-09-05T11:34:45.973 回答