I have a data sheet of primfaces within the boundaries of a dataGrid, but I have a problem mapping with a property of the nested collection dataList (java.util.Set). When I refer to any attribute on a nested Set (dream.tag), I get an exception:
javax.servlet.ServletException: /registered/modify.xhtml @ 42,48 value = "# {tag.id}": The 'id' property was not found in type org.hibernate.collection.PersistentSet.
This attribute is there, but the dream.tag attribute maps to the private Set tag. Is it possible to use the dataList component using Set. I copied the schema 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; } }
source share