我正在尝试使用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中的一个错误。有人找到了解决方法吗?或者我在这里有错误吗?
答案 0 :(得分: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"/>
它应该有用。
答案 1 :(得分:0)
是的,这可能是一个错误!
我有同样的命令。它适用于较旧版本的Roo,但我尝试了一个旧的备份脚本。它不再有用了。