基于公共性JSF组合两个数据表

基于公共性JSF组合两个数据表,jsf,primefaces,Jsf,Primefaces,我有以下数据库结构:一个有多个子项目的项目和多个在特定子项目上预订了一些时间的用户。我需要为每个项目显示子项目的列表,并为每个子项目显示在它上面工作的用户和预订的总时间。 像这样: Project1 子项目1用户1时间记录 用户2时间记录 子项目2用户3时间记录 用户2时间记录 这就是我到目前为止所做的: <p:dataTable var="subproj" value="#{project_stats_user_chart.selectedProject.su

我有以下数据库结构:一个有多个子项目的项目和多个在特定子项目上预订了一些时间的用户。我需要为每个项目显示子项目的列表,并为每个子项目显示在它上面工作的用户和预订的总时间。 像这样:

Project1
子项目1用户1时间记录
用户2时间记录
子项目2用户3时间记录
用户2时间记录
这就是我到目前为止所做的:

<p:dataTable var="subproj"
             value="#{project_stats_user_chart.selectedProject.subprojects}"
             id="projectSubprojects">

    <p:column>
        <h:outputText value="#{subproj.type}" style="font-size: 1em;"></h:outputText>
    </p:column>

    <p:column>
        <p:dataTable var="user"
                     value="#{project_stats_user_chart.users}" 
                     id="SubprojectsUsers">

            <p:column>
                <h:outputText value="#{user.firstName}"
                              style="font-size: 1em;"></h:outputText>
                <h:outputText value="#{user.lastName}" style="font-size: 1em;">
                </h:outputText>
            </p:column>
        </p:dataTable>
    </p:column>
</p:dataTable>

我现在的问题是根据需要显示预定的时间。
我有一个查询,计算每个用户在每个子项目上的总和,但我需要根据这两个表的共性迭代这两个表,或者合并这两个表,以便得到我想要的组合。我不熟悉PrimeFaces,所以也许有人可以帮助我在Java(模型)端,而不是XHTML(视图)端实现这一点。您应该在Java端准确地准备视图所期望的模型。视图应该尽可能保持沉默,只显示它提供给的模型。

我不猜测/理解数据库中表之间的关系。您使用的通用性这个术语让我觉得数据库中表之间的关系是不可靠的。如果允许同一用户参与多个子项目(顺便说一句,这看起来很直观,尽管没有明确提到),那么关系应该是这样的:数据库中应该有四个表来维护您所说的内容。我选择任意的名字<代码>项目,
用户表
子项目
子项目用户
。待续。
项目
表维护有关项目的信息。
sub_项目
表维护有关子项目的信息。
user\u表
表维护有关用户的信息,最重要的是
sub\u project\u user
是一个连接表,表示/表示用户和子项目之间的多对多关系。如果数据库中的表之间的关系没有得到正确维护,您可能不必要地在前端处理完全不同的问题。数据库方面的一个错误决不能掉以轻心。否则,这个问题将永远无法解决,至少在某种程度上应该得到解决。(旁白:这就像报告一样,您还应该将其他JSF/PrimeFaces组件与
组合在一起,例如
子表等。它们在showcase上进行了演示)。非常感谢您的回答!我的问题不在于数据库,而是在xhtml中,当我必须显示组合项目子项目用户预定的时间时。我所说的共性是指ID。我读了一些关于动态数据表的内容,但我不确定它是否适用于这里。您似乎只维护了两个表,即
项目
(父表)和
子项目
(项目表的子表)。在所提供的代码片段(问题的第一个)中,
User2
子项目1
子项目2
之间重复。正如前面的评论所说的,如果这是场景,那么你必须考虑一个添加连接表加入<代码> Project < /C>和 UsSeriTabe< /Cord>,表示所述表之间的多对多关系。前端问题完全透明地依赖于错误的表关系。不要忽视它。