Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 来自多个数据库表的JSF datatable列_Spring_Hibernate_Jsf_Nhibernate_Jsf 2 - Fatal编程技术网

Spring 来自多个数据库表的JSF datatable列

Spring 来自多个数据库表的JSF datatable列,spring,hibernate,jsf,nhibernate,jsf-2,Spring,Hibernate,Jsf,Nhibernate,Jsf 2,我有一个JSF数据表,它有三列,分别是:工作类型描述、项目阶段描述和活动描述。这些列来自两个不同的数据库表,这两个表之间的关系是一对多的 第一个表名为工作类型。它有1)工作类型Cd,2)工作类型描述,3)按名称创建,4)按名称创建,5)按名称更新,6)按名称更新 第二个表名为“活动类型”。它有1)活动Cd,2)工作类型Cd,3)项目阶段,4)活动描述,5)按名称创建,6)创建,7)按名称更新,8)更新 我使用Hibernate+Spring+JSF,我的问题是如何在JSF datatable中显

我有一个JSF数据表,它有三列,分别是:工作类型描述、项目阶段描述和活动描述。这些列来自两个不同的数据库表,这两个表之间的关系是一对多的

第一个表名为工作类型。它有1)工作类型Cd,2)工作类型描述,3)按名称创建,4)按名称创建,5)按名称更新,6)按名称更新

第二个表名为“活动类型”。它有1)活动Cd,2)工作类型Cd,3)项目阶段,4)活动描述,5)按名称创建,6)创建,7)按名称更新,8)更新


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

让您的服务层返回一个
列表
活动类型
中的
@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>

#{activityType.workType.workTypeDesc}
#{activityType.projectPhase}
#{activityType.activityDesc}

通常不需要为此创建另一个映射层。

感谢您的帮助!巴卢斯。我试过你的方法,但还是不行。我已经在cfg文件中设置了一对多映射。我只是在DAO层中返回列表作为返回类型,在JSF页面中,在服务层中使用所有这些方法,我遵循了上面的建议。你能指定解决方案吗?谢谢非常感谢。请从开发者的角度而不是最终用户的角度详细说明“不起作用”。你没有给出任何关于它到底失败了什么以及如何失败的线索。谢谢你的回复。当我打开页面时,错误是java.lang.NumberFormatException:For输入字符串:java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)at java.lang.Integer.parseInt(Integer.java:449)at java.lang.Integer.parseInt(Integer.java:499)at javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:375)在javax.el.ArrayELResolver.getValue(ArrayELResolver.java:195)上,JSF似乎无法使用
activityTypes来获取工作类型
显然不是
列表
,而是
列表
。修复您的JPA查询。这不是JSF的问题。JPA刚刚提供了错误的型号。谢谢!巴卢斯。这是我的hql:从ActivityType as at internal join at.workType,我将返回类型作为List,并保留其他内容。仍然得到了上面的错误。你知道为什么吗?谢谢