我正在循环访问“RSVP”对象的集合并打印出每个对象的“Name”属性的值,如下所示
<p:dataTable id="rsvpDataTable" var="rsvp" value="#{eventController.event.rsvps}"...
<h:outputText value="#{rsvp.name}" />
</p:dataTable>
但我收到错误:类 'org.hibernate.collection.internal.PersistentSet' 没有属性 'name'
相反,如果我打印出“rsvp.class.name”来查看它是什么类型,它确实是一个 PersistentSet。
但为什么?它应该是集合中的单个 RSVP 实例。
如果我调试代码并在 getRsvps() 处停止,我可以看到它返回一个包含我的 RSVP 对象的 PersistentSet。 RSVP 与事件具有双向关系。会不会是这个原因造成的?
实际上,我也有点怀疑它是否是一个持久集,我本以为它现在已经转换回正常的“Java”集,但也许不是。
Thanks
你不能迭代Set
,目前这是 JSF 的限制。 JSF 2.2就能做到这一点。
也就是说,你可以自己转换它,或者,我会做什么,你可以使用OmniFaces#{of:setToList}EL功能 http://showcase.omnifaces.org/functions/Converters。您不必重新发明轮子。 :)
也可以看看这个答案 https://stackoverflow.com/a/7712593/1363540作者:BalusC.
至于 Hibernate 返回的事实PersistentSet
,这就是它的工作原理。 Hibernate 有它自己的实现Set
,因此它可以实现延迟加载等功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)