【发布时间】:2012-10-28 12:36:58
【问题描述】:
我正在循环访问“RSVP”对象的集合,并像这样打印出每个人的“名称”属性的值
<p:dataTable id="rsvpDataTable" var="rsvp" value="#{eventController.event.rsvps}"...
<h:outputText value="#{rsvp.name}" />
</p:dataTable>
但我收到错误:“org.hibernate.collection.internal.PersistentSet”类没有“名称”属性
如果相反,我打印出 'rsvp.class.name' 以查看它是什么类型,它确实是一个 PersistentSet。
但是为什么呢?它应该是集合中的单个 RSVP 实例。
如果我调试代码并在 getRsvps() 处停止,我可以看到它正在返回一个包含我的 RSVP 对象的 PersistentSet。 RSVP 与 Event 具有双向关系。会不会造成这种情况?
实际上我也有点怀疑它是否是 PersistentSet,我原以为现在它会被转换回普通的“Java”集,但也许不会。
谢谢
【问题讨论】:
-
你的
PersistentSet有getter 'getName()' 吗?因为这就是 jsf 正在寻找的东西 -
是的,我的 Event 类有一个 getRsvps() 它返回一个 Set
并且 Rsvp 类有一个 getName() 方法。这一切都在工作,直到(我认为)我改变了我的加载策略,但我不明白是什么导致它突然出错 -
它在 eventController 中是一个 faces ManagedBean(而不是 CDI),因为我需要 ViewScoped,不确定这是否相关。
-
尝试用一个列表包装你的集合(让
getRsvps()返回一个列表),看看它是否有效...... -
干杯丹尼尔,你也是对的,它实际上曾经是一个列表,这就是它曾经工作的原因...... doh!
标签: hibernate primefaces