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.
Creation works fine, but if I query for ObjectItemAssociationStatus the fields subjObjItem and objObjItem are null !? Is this because I used their columns in ObjectItemAssociation? What would be the best way to map this (assuming that I did not do that)? Thanks for helping (I skipped some fields in the listings below) -- Christopher twitter: @fakod blog: http://blog.fakod.eu 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; . . . }
