2013-10-18 5 views
2

전자 메일 및 데이터의 두 클래스가 있습니다. 그들 사이의 관계는 OneToMany입니다. 데이터의 데이터 테이블에 포함 된 전자 메일 목록을 표시하려고합니다. 내가 어떻게 할 수 있니? 내가 DataTable의 이메일 목록이 포함 된 열을 표시 할 때 빈 아무것도 표시되지 않습니다이다데이터 테이블에 onetomany 관계 표시

<p:dataTable value="#{dataMB.datas}" var="item" id="datas" rowsPerPageTemplate="5,10,15,20,25,30" 
             paginator="true" rows="10" filteredValue="#{dataMB.filteredDatas}" 
             selectionMode="single" rowKey="#{item.id}" 
             selection="#{dataMB.selectedData}"> 
         <p:ajax event="rowSelect" update=":form:dataView , :form:confirmDelete"/> 
         <p:column sortBy="#{item.date}" filterBy="#{item.date}"> 
          <f:facet name="header"> 
           <p:outputLabel value="Creation"/> 
          </f:facet> 
          <p:outputLabel value="#{item.date}"> 
           <f:convertDateTime pattern="MM/dd/yyyy HH:mm:ss" /> 
          </p:outputLabel> 
         </p:column> 
         <p:column sortBy="#{item.grabduration}" filterBy="#{item.grabduration}"> 
          <f:facet name="header"> 
           <h:outputText value="Time of execution"/> 
          </f:facet> 
          <h:outputText value="#{item.grabduration}"/> 
         </p:column> 
         <p:column sortBy="#{item.keyword}" filterBy="#{item.keyword}"> 
          <f:facet name="header"> 
           <h:outputText value="Keyword"/> 
          </f:facet> 
          <h:outputText value="#{item.keyword}"/> 
         </p:column> 
         <p:column sortBy="#{item.number}" filterBy="#{item.number}"> 
          <f:facet name="header"> 
           <h:outputText value="Number"/> 
          </f:facet> 
          <h:outputText value="#{item.number}"/> 
         </p:column>  
          <p:column sortBy="#{item.emails}" filterBy="#{item.emails}"> 
          <f:facet name="header"> 
           <h:outputText value="Emails List"/> 
          </f:facet> 
          <h:outputText value="#{item.emails}"/> 
         </p:column> 
        </p:dataTable> 

:

@Entity 
@Table(name = "EMAILS") 
public class Email implements Serializable { 
    @Id 
    @Column(name = "id") 
    private String id; 
    @Column(name = "extraction_Date") 
    @Temporal(TemporalType.TIMESTAMP) 
    private Date date; 
    @Size(max = 255) 
    @Column(name = "email") 
    private String email; 
    @ManyToOne(cascade = CascadeType.PERSIST) 
    private Data dataBase; 

    public Email() { 
     this.date = new Date(); 
     this.id = IdGenerator.IdGenerathorCall(); 

    } 
    @Entity 
@Table(name = "DATAS") 
public class Data implements Serializable { 

    @Id 
    @Column(name = "id") 
    private String id; 
    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name = "creation") 
    private Date date; 
    @Column(name = "timeofextraction") 
    private float grabduration; 
    @Column(name = "keyword") 
    private String keyword; 
    @Column(name = "number") 
    private int number; 
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "dataBase", fetch = FetchType.EAGER) 
    private List<Email> emails; 

    public Data() { 
     super(); 
     this.date = new Date(); 
     this.id = IdGenerator.IdGenerathorCall(); 
    } 

내 페이지 dataList.xhtml는 다음과 같습니다 은이 나의 실체의 부분입니다.

+0

primefaces 서브 테이블을 살펴보십시오. http://www.primefaces.org/showcase/ui/datatableSubTable.jsf – user1983983

답변

0

단일 값 구성 요소에 목록을 렌더링하려고합니다.

이에 이메일 열을 변경

:

<p:column headerText="Emails List"> 
    <p:dataList value="#{item.emails}" var="email" itemType="none"> 
     #{email.email} 
    </p:dataList> 
</p:column> 

이 외에도 당신은 전자 우편에 의해 보조 정렬 방법 및 필터를 확인해야합니다.