自我引用的实体

时间:2011-05-17 12:38:16

标签: spring-roo

我有一个名为 person 的实体。 每个都有三个字段:

性别(男,女) 母亲(自我引用) 父亲(自我引用)

现在,在我看来jspx中,我希望两个选定的字段只显示母亲选择中的女性人物和父亲字段中的男性人物。最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

首先,您应该创建动态查找器,以便sex获取人员。输入Roo控制台:

finder list

然后找到类似findPeopleBySex的内容并输入:

finder add --finderName findPeopleBySex

如果您不想搭建此查找程序,可以将exposeFinders = false添加到@RooWebScaffold的{​​{1}}注释中。

然后你应该打开你的PersonController(我认为这个身体是空的)并放置如下内容:

PersonController

最后打开@ModelAttribute("men") public Collection<Person> populateMen() { return Person.findPeopleBySex(Gender.Male).getResultList(); } @ModelAttribute("women") public Collection<Person> populateWomen() { return Person.findPeopleBySex(Gender.Female).getResultList(); } ,然后找到以下行:

{project_root}/src/main/webapp/WEB-INF/views/people/create.jspx

将它们改为:

    <field:select field="mother" id="c_xxx_Person_mother" itemValue="id" items="${people}" path="/people" z="xxx"/>
    <field:select field="father" id="c_xxx_Person_father" itemValue="id" items="${people}" path="/people" z="xxx"/>

确保 <field:select field="mother" id="c_xxx_Person_mother" itemValue="id" items="${women}" path="/people" z="xxx"/> <field:select field="father" id="c_xxx_Person_father" itemValue="id" items="${men}" path="/people" z="xxx"/> 属性(哈希码)的值变为z。这意味着Roo将来不会改变它。

现在您可以运行您的应用程序并查看结果。