使用Spring Roo解决@OneToMany注释问题

Eri*_*son 4 java spring spring-roo

我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

这产生了预期的实体和数据库表中的(包括的链接表.)Father实体与以下标注,符合JPA规范生成:

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

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

创造父亲

Name:      (field to enter name)
Children:  This relationship is managed from the Father side.
Run Code Online (Sandbox Code Playgroud)

这看起来像是Roo中的一个错误.有人找到了解决方法吗?或者我在这里有错误?

Eri*_*son 6

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

<field:simple field="children" id="c:family.Father.children" messageCode="entity.reference.not.managed" 
 messageCodeAttribute="Child" z="dMKrUOiCeYNub4vNayuiWJ99s1k="/>
Run Code Online (Sandbox Code Playgroud)

这应该替换为:

<field:select field="children" id="c:family.Father.children" itemValue="id" 
 items="${children}" multiple="true" path="/children"/>
Run Code Online (Sandbox Code Playgroud)

它应该工作.