View Javadoc
1   package ejava.examples.orm.map.annotated;
2   
3   import java.util.HashMap;
4   import java.util.Map;
5   
6   import javax.persistence.*;
7   
8   /**
9    * This class represents a parent in One-to-Many, bi-directional relationship.
10   * The parent is the inverse side of the relationship and keeps the children 
11   * in a Map. The OneManyOwningChild defines the relationship.
12   */
13  @Entity @Table(name="ORMMAP_ONEMANY_INVPARENT")
14  public class OneManyInverseParent {
15      @Id
16      private String name;
17  
18      @OneToMany(mappedBy="oneInverseParent")
19      @MapKey(name="name")
20      private Map<String, OneManyOwningChild> ownedByChildren =
21              new HashMap<String, OneManyOwningChild>();
22  
23      protected OneManyInverseParent() {}
24      public OneManyInverseParent(String name) { this.name = name; }
25  
26      public String getName() { return name; }
27      
28      public Map<String, OneManyOwningChild> getOwnedByChildren() { return ownedByChildren; }
29      public void setOwnedByChildren(
30                      Map<String, OneManyOwningChild> ownedByChildren) {
31          this.ownedByChildren = ownedByChildren;
32      }
33  
34      public String toString() {
35          StringBuilder text = new StringBuilder();
36          
37          text.append(getClass().getName());
38          text.append(", name=" + name);
39          if (ownedByChildren != null) {
40              text.append(", ownedByChildren=(" + ownedByChildren.size() + ")={");
41              for (String key : ownedByChildren.keySet()) {
42                      text.append(ownedByChildren.get(key).getName() + ", ");
43              }
44              text.append("}");
45          }
46          return text.toString();
47      }
48  }