2009-12-06 107 views
0

我嘗試構建使用JPA + EJB3和Stripes的簡單Java EE應用程序。 這是一個小地址簿。我使用2個JPA實體,Person和Email。每個人可以有更多的電子郵件,但每個電子郵件只能屬於一個人。我的實體看起來像這樣(使用默認getter和setter方法):JPA和EJB - OneToMany問題

Person.java:

@Entity 
public class Person implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private String name; 
    @OneToMany(cascade = CascadeType.REMOVE, mappedBy = "person") 
    private Collection<Email> emails; ... } 

Email.java:

@Entity 
public class Email implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private String note; 
    private String address; 
    @ManyToOne 
    private Person person; ... } 

但是,當我試圖展示每個人的名單和他們的所有電子郵件,我無法收到電子郵件顯示。這是我想如何打印它們:

<c:forEach items="${actionBean.people}" var="person"> 
    <tr> 
    <td><c:out value="${person.name}"/></td> 
    <td> 
     <c:forEach items="${person.email}" var="email"> 
      <c:out value="${email.address}"/><c:out value="${email.note}"/> 
     </c:forEach> 
    </td> 
    </tr> 
</c:forEach> 

任何想法,如何解決這個問題?

回答

1

您的Person類有getEmail()方法或getEmails()方法嗎?鑑於emails的變量名稱,我期望給定屬性名稱的Person.getEmails(),但您的JSTL正在尋找getEmail()

如果這不是問題,我相信您可能需要爲Email類添加一個@JoinColumn註釋,並在電子郵件表中添加一個引用人員ID的列。這就是我完成所有ManyToOne註釋的過程。 ManyToOne的例子可以在here找到。

+0

謝謝@JoinColumn解決了它。 – marioErr 2009-12-06 05:07:41