2009-12-06 9 views
0

Je tente de créer une application Java EE simple qui utilise JPA + EJB3 et Stripes. C'est un petit carnet d'adresses. J'utilise 2 entités JPA, Personne et Email. Chaque personne peut avoir plus de courriels, mais chaque courriel ne peut appartenir qu'à une seule personne. Mes entités ressemble à ceci (avec setters par défaut et getters):JPA et EJB - Problème 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; ... } 

Mais lorsque je tente de montrer la liste de toutes les personnes et tous leurs e-mails, je ne peux pas obtenir des courriels pour montrer. Voici comment j'essaie de les imprimer:

<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> 

Une idée, comment résoudre ce problème?

Répondre

1

Est-ce que votre classe Person a une méthode getEmail() ou une méthode getEmails()? Étant donné le nom de la variable de emails je m'attendrais à un Person.getEmails() étant donné le nom d'attribut, mais votre JSTL recherche getEmail(). Si ce n'est pas le problème, je crois que vous devrez peut-être ajouter une annotation @JoinColumn à votre classe Email et ajouter une colonne à la table de courrier électronique qui renvoie à l'ID de personne. C'est comme ça que j'ai fait toutes mes annotations ManyToOne. Un exemple ManyToOne peut être trouvé here.

+0

Merci, @JoinColumn l'a résolu. – marioErr