【问题标题】:JSF datatable columns from multiple database tables来自多个数据库表的 JSF 数据表列
【发布时间】:2013-09-02 08:52:56
【问题描述】:

我有一个 JSF 数据表,它有三列,它们是:Work_Type_Desc、Project_Phase 和 Activity_Desc。这些列来自 2 个不同的数据库表,这两个表的关系是一对多的。

第一个表名称是 Work_Type。它有 1) Work_Type_Cd, 2)Work_Type_Desc, 3)Created_By_Name, 4)Created_DT, 5)Updated_By_Name, 6) Updated_DT

第二个表名称是 Activity_Type。它有 1)Activity_Cd、2) Work_Type_Cd、3)Project_Phase、4)Activity_Desc、5)Created_By_Name、6)Created_DT、7)Updated_By_Name、8) Updated_DT。

我使用Hibernate+Spring+JSF,我的问题是如何在JSF数据表中显示这三列记录,我需要创建一个新的模型域类来存储这两个表属性吗?如果是这样,如何处理新模型类中的PK和FK。谢谢!

【问题讨论】:

    标签: spring hibernate jsf nhibernate jsf-2


    【解决方案1】:

    只需让您的服务层返回一个List<ActivityType>WorkType 已被 ActivityType 中的 @ManyToOne 属性引用,对吧?

    <h:dataTable value="#{bean.activityTypes}" var="activityType">
        <h:column>#{activityType.workType.workTypeDesc}</h:column>
        <h:column>#{activityType.projectPhase}</h:column>
        <h:column>#{activityType.activityDesc}</h:column>
    </h:dataTable>
    

    通常没有必要为此创建另一个映射层。

    【讨论】:

    • 感谢您的帮助!Balus。我试过你的方法,还是不行。我已经在 cfg 文件中设置了一对多映射。我只是在 DAO 层中返回 List 作为返回类型,而在服务层中的所有这些方法,在 JSF 页面中,我遵循了您的上述建议。你能指定解决方案吗?谢谢!非常感谢。
    • 请从开发人员的角度而非最终用户的角度详细说明“不起作用”。您没有提供关于它失败的原因和方式的任何线索。
    • 感谢您的回复。当我打开页面时,错误是 java.lang.NumberFormatException: For input string: "workType" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java: 449) 在 java.lang.Integer.parseInt(Integer.java:499) 在 javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:375) 在 javax.el.ArrayELResolver.getValue(ArrayELResolver.java:195) JSF 无法使用 获取 workType
    • 显然activityTypes 不是List&lt;ActivityType&gt;,而是List&lt;Object[]&gt;。修复您的 JPA 查询。这不是 JSF 问题。 JPA 只是提供了错误的模型。
    • 谢谢!巴鲁斯。这是我的 hql:从 ActivityType 到内部连接 ​​at.workType,我将返回类型设置为 List,并保留其他内容。仍然出现上述错误。你知道为什么吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多