Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Complex Mapping question

Hi Tom, no I have a problem with OpenJPA. 

I have a fixed (standardized) relational schema and I am creating an JPA 2.0 access layer for that (unfortunately, I can not change the schema!). So I created the mapping from the given table statements (I postet two of them below).

The problem is, that OpenJPA is not able to use ManyToOne relations as part of composite primary keys (this is how the schema is designed).
I think my mapping is OK and the question is: Will it work with EclipseLink? If it is so, I will switch...

Christopher



On Thu, Feb 17, 2011 at 2:59 PM, Tom Ware <tom.ware@xxxxxxxxxx> wrote:
Are you having a problem in EclipseLink?  This forum is for EclipseLink.

If so, can you provide the details of how you have designed your mappings.

-Tom

Christopher Schmidt wrote:
Hi all,
I have a problem with the best mapping of two tables: obj_item_assoc and obj_item_assoc_stat. Both share 3 of its primary keys. The "XXX_obj_item" primary keys are a fk's to the entity ObjectItem - thats why I modeled it as @ManyToOne relations.


Is this generally OK how I did this (see below)?

Unfortunately this is not working with OpenJPA. So - thats why I am asking this here ;-)

Thanks Christopher



TABLE obj_item_assoc
(
 subj_obj_item_id numeric(20,0) NOT NULL,
 obj_obj_item_id numeric(20,0) NOT NULL,
 obj_item_assoc_ix numeric(20,0) NOT NULL,

 CONSTRAINT obj_item_assoc_pkey PRIMARY KEY (subj_obj_item_id, obj_obj_item_id, obj_item_assoc_ix),

 CONSTRAINT obj_item_assoc_obj_obj_item_id_fkey FOREIGN KEY (obj_obj_item_id)
     REFERENCES obj_item (obj_item_id),

 CONSTRAINT obj_item_assoc_subj_obj_item_id_fkey FOREIGN KEY (subj_obj_item_id)
     REFERENCES obj_item (obj_item_id)
)


TABLE obj_item_assoc_stat
(
 subj_obj_item_id numeric(20,0) NOT NULL,
 obj_obj_item_id numeric(20,0) NOT NULL,
 obj_item_assoc_ix numeric(20,0) NOT NULL,
 obj_item_assoc_stat_ix numeric(20,0) NOT NULL,

 CONSTRAINT obj_item_assoc_stat_pkey PRIMARY KEY (subj_obj_item_id, obj_obj_item_id, obj_item_assoc_ix, obj_item_assoc_stat_ix),

 CONSTRAINT obj_item_assoc_stat_subj_obj_item_id_fkey FOREIGN KEY (subj_obj_item_id, obj_obj_item_id, obj_item_assoc_ix)
     REFERENCES obj_item_assoc (subj_obj_item_id, obj_obj_item_id, obj_item_assoc_ix) )



@Entity
@Table(name = "obj_item_assoc_stat")
@IdClass(ObjectItemAssociationStatus.ObjectItemAssociationStatusId.class)
public class ObjectItemAssociationStatus extends LoggableEntity {

   @Id
   @Column(name = "obj_item_assoc_stat_ix", nullable = false, length = 20)
   protected BigInteger ix;

   @Id
   @ManyToOne(fetch = FetchType.EAGER)
   @JoinColumn(name = "subj_obj_item_id", nullable = false, updatable = false)
   protected ObjectItem subjObjItem;

   @Id
   @ManyToOne(fetch = FetchType.EAGER)
   @JoinColumn(name = "obj_obj_item_id", nullable = false, updatable = false)
   protected ObjectItem objObjItem;

   @Id
   @ManyToOne(fetch = FetchType.EAGER)
   @JoinColumns({@JoinColumn(name = "subj_obj_item_id", referencedColumnName = "subj_obj_item_id", nullable = false),
           @JoinColumn(name = "obj_obj_item_id", referencedColumnName = "obj_obj_item_id", nullable = false),
           @JoinColumn(name = "obj_item_assoc_ix", referencedColumnName = "obj_item_assoc_ix", nullable = false)})
   protected ObjectItemAssociation objItemAssoc;
. . . }

@Entity
@Table(name = "obj_item_assoc")
@IdClass(ObjectItemAssociation.ObjectItemAssociationId.class)
public class ObjectItemAssociation extends NonIndependentEntity {

   @Id
   @Column(name = "obj_item_assoc_ix", nullable = false, length = 20)
   protected BigInteger ix;

   @Id
   @ManyToOne(fetch = FetchType.EAGER)
   @JoinColumn(name = "subj_obj_item_id", nullable = false, updatable = false)
   protected ObjectItem subjObjItem;

   @Id
   @ManyToOne(fetch = FetchType.EAGER)
   @JoinColumn(name = "obj_obj_item_id", nullable = false, updatable = false)
   protected ObjectItem objObjItem;
. . . }


--
Christopher
twitter: @fakod
blog: http://blog.fakod.eu


------------------------------------------------------------------------

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users



--
Christopher
twitter: @fakod
blog: http://blog.fakod.eu


Back to the top