我尝试构建使用JPA + EJB3和Stripes的简单Java EE应用程序。 这是一本小通讯录。我正在使用2个JPA实体,Person和Email。每个人都可以收到更多电子邮件,但每封电子邮件只能属于一个人。我的实体看起来像这样(使用默认的setter和getter):
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>
任何想法,如何解决这个问题?
答案 0 :(得分:1)
您的Person
班级有getEmail()
方法或getEmails()
方法吗?鉴于emails
的变量名称,我希望给定属性名称Person.getEmails()
,但您的JSTL正在寻找getEmail()
。
如果这不是问题,我相信您可能需要在@JoinColumn
课程中添加Email
注释,并在电子邮件表格中添加一列,引用该人员ID。这就是我完成所有ManyToOne注释的方法。可以找到一个示例ManyToOne here。