diff options
author | Devan Goodwin <dgoodwin@redhat.com> | 2009-12-03 16:20:59 -0400 |
---|---|---|
committer | Devan Goodwin <dgoodwin@redhat.com> | 2009-12-03 16:22:09 -0400 |
commit | 6e0285b30d87bbab036f6ecd8d050593b7c07ce3 (patch) | |
tree | 15997fa704170e6c931f4b37a360d4f1c10cdc72 | |
parent | 3a30375aabcfc58a2ca83381caec4079f2249c7e (diff) | |
download | candlepin-6e0285b30d87bbab036f6ecd8d050593b7c07ce3.tar.gz candlepin-6e0285b30d87bbab036f6ecd8d050593b7c07ce3.tar.xz candlepin-6e0285b30d87bbab036f6ecd8d050593b7c07ce3.zip |
Make owner -> user bi-directional relationship.
5 files changed, 34 insertions, 4 deletions
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java index 1e20d3e..6bc0019 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java @@ -66,7 +66,7 @@ public class Consumer { @ManyToOne @ForeignKey(name="fk_consumer_owner") - @JoinColumn(nullable=false, name="owner_id", referencedColumnName="id") + @JoinColumn(nullable=false) private Owner owner; // Consumer hierarchy it meant to be useful to represent the relationship between diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java index 61f0787..6367817 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java @@ -51,8 +51,6 @@ public class Owner { @Column(nullable=false) private String name; - // TODO: Remove these transients once the appropriate objects are mapped: - @OneToMany(mappedBy="owner", targetEntity=Consumer.class) private Set<Consumer> consumers; @@ -61,7 +59,7 @@ public class Owner { @ForeignKey(name="fk_user_owner_id") private Set<EntitlementPool> entitlementPools; - @Transient + @OneToMany(mappedBy="owner", targetEntity=User.class) private Set<User> users; /** diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/User.java b/proxy/code/src/org/fedoraproject/candlepin/model/User.java index 7594e9d..dd67521 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/User.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/User.java @@ -19,6 +19,7 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.xml.bind.annotation.XmlAccessType; @@ -44,6 +45,7 @@ public class User { @ManyToOne @ForeignKey(name="fk_user_owner_id") + @JoinColumn(nullable=false) private Owner owner; private String login; diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java b/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java index c42af0a..83e6299 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java @@ -115,4 +115,28 @@ public class OwnerTest extends DatabaseTestFixture { Owner lookedUp = (Owner)em.find(Owner.class, o.getId()); assertEquals(2, lookedUp.getConsumers().size()); } + + @Test + public void bidirectionalUsers() throws Exception { + beginTransaction(); + Owner o = TestUtil.createOwner(); + + User u1 = TestUtil.createUser(o); + User u2 = TestUtil.createUser(o); + + o.addUser(u1); + o.addUser(u2); + em.persist(o); + em.persist(u1); + em.persist(u2); + + commitTransaction(); + + assertEquals(2, o.getUsers().size()); + + em.clear(); + Owner lookedUp = (Owner)em.find(Owner.class, o.getId()); + assertEquals(2, lookedUp.getUsers().size()); + } + } diff --git a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java index a000d43..a7b21c0 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java +++ b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java @@ -26,6 +26,7 @@ import org.fedoraproject.candlepin.model.EntitlementPool; import org.fedoraproject.candlepin.model.ObjectFactory; import org.fedoraproject.candlepin.model.Owner; import org.fedoraproject.candlepin.model.Product; +import org.fedoraproject.candlepin.model.User; /** * TestUtil for creating various testing objects. @@ -87,6 +88,11 @@ public class TestUtil { return e; } + public static User createUser(Owner owner) { + User u = new User(owner, "testuser" + randomInt(), "sekret"); + return u; + } + public static Date createDate(int year, int month, int day) { Calendar cal = Calendar.getInstance(); |