I have a primefaces dataList within a primefaces dataGrid but I'm having issue mapping to a property of the nested dataList collection (java.util.Set). When I reference any attribute on the nested Set (dream.tag), I get exception:
javax.servlet.ServletException: /registered/modify.xhtml @42,48 value="#{tag.id}": Property 'id' not found on type org.hibernate.collection.PersistentSet.
That attribute is there, but the dream.tag attribute is mapped to a private Set tag. Is it possible to use the dataList component with a Set. I've copied an outline of my data model below. Thanks for the help!
<p:dataGrid var="dream" value="#{dreamModifyBean.dreams}" columns="5" rows="10" paginator="true" effect="true" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="10,15,20" paginatorPosition="bottom"> <p:column> <h:panelGrid columns="1" style="width:100%"> <h:outputText value="#{dream.order}. #{dream.title}"/><br/> <p:graphicImage value="#{dream.imageThumb}" width="125" height="100"/><br/> <h:outputText value="#{dream.notes}"/><br/> <p:dataList value="#{dream.tag}" var="tag"> <h:outputText value="#{tag.id}"/> </p:dataList> <h:outputText value="#{bundle['dreamModify.cost.TEXT']} #{dream.cost}"/><br/> </h:panelGrid> </p:column> </p:dataGrid> Dream (dreamModifyBean.dreams) - Parent:
public class Dream implements Serializable{ @OneToMany(fetch=FetchType.EAGER,cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinColumn(name="DREAM_ID") private Set<Tag> tag; public Set<Tag> getTag() { return tag; } public void setTag(Set<Tag> tag) { this.tag = tag; } } Tag (dream.tag) - Child
public class Tag { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Basic(optional=false) @Column(name="ID") private Long id; @Basic(optional=false) @Column(name="DESCRIPTION") private String description; @ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="DREAM_ID") private Dream dream; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Dream getDream() { return dream; } public void setDream(Dream dream) { this.dream = dream; } }