0 Replies Latest reply on Feb 27, 2007 2:29 PM by Mike Dougherty

    Primary key object mapping

    Mike Dougherty Newbie

      Hello,

      I have the following class structure:

      @Entity
      @Table(name="FOO")
      @IdClass(FooPK.class)
      public class Foo {
       private Long id;
       private String name;
       private String description;
       private List<FooBar> bars;
      
       @Id @Column(name="FOO_ID")
       public Long getId() {
       return id;
       }
       public void setId(Long id) {
       this.id = id;
       }
      
       @Id @Column(name="FOO_NAME")
       public String getName() {
       return name;
       }
       public void setName(String name) {
       this.name = name;
       }
      
       public static class FooPK {
       private Long id;
       private String name;
      
       @Id @Column(name="FOO_ID")
       public Long getId() {
       return id;
       }
       public void setId(Long id) {
       this.id = id;
       }
      
       @Id @Column(name="FOO_NAME")
       public String getName() {
       return name;
       }
       public void setName(String name) {
       this.name = name;
       }
       }
      }
      
      


      @Entity
      @Table(name="BAR")
      @IdClass(BarPK.class)
      public class Bar {
       private Long id;
       private String name;
       private String description;
      
       @Id @Column(name="BAR_ID")
       public Long getId() {
       return id;
       }
       public void setId(Long id) {
       this.id = id;
       }
      
       @Id @Column(name="BAR_NAME")
       public String getName() {
       return name;
       }
       public void setName(String name) {
       this.name = name;
       }
      
       public static class BarPK {
       private Long id;
       private String name;
      
       @Id @Column(name="BAR_ID")
       public Long getId() {
       return id;
       }
       public void setId(Long id) {
       this.id = id;
       }
      
       @Id @Column(name="BAR_NAME")
       public String getName() {
       return name;
       }
       public void setName(String name) {
       this.name = name;
       }
       }
      }
      
      


      @Entity
      @Table(name="FOO_BAR")
      @IdClass(FooBarPK.class)
      public class FooBar {
       private Foo foo;
       private Bar bar;
       private Date effectiveDate;
       private Date endDate;
      
       @Id @JoinColumn(name="FOO_ID")
       public Foo getFoo() {
       return foo;
       }
       @Id @JoinColumn(name="BAR_ID")
       public Bar getBar() {
       return bar;
       }
       @Id @Column(name="EFF_DATE")
       public Date getEffectiveDate() {
       return effectiveDate;
       }
      
       public static class FooBarPK {
       private Foo foo;
       private Bar bar;
       private Date effectiveDate;
      
       @Column(name="FOO_ID")
       public Foo getFoo() {
       return foo;
       }
       @Column(name="BAR_ID")
       public Bar getBar() {
       return bar;
       }
       @Column(name="EFF_DATE")
       public Date getEffectiveDate() {
       return effectiveDate;
       }
       }
      }
      


      The question I have relates to the FooBar class. The table behind it has FOO_ID and BAR_ID columns as part of the primary key. But I can't seem to figure out how to map these column values to appropriate Foo.id and Bar.id values. Any ideas on how I might be able to do this?

      Thanks for your help.