Unsubscribe ASF subversion and git services (Jira) via dev <[email protected]>於 2026年11月10日週二,15:51寫道:
> > [ > https://issues.apache.org/jira/browse/OPENJPA-2929?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18141819#comment-18141819 > ] > > ASF subversion and git services commented on OPENJPA-2929: > ---------------------------------------------------------- > > Commit f6e8542893e17f14fc6f3d715ebf228da4102e67 in openjpa's branch > refs/heads/OPENJPA-2929 from Richard Zowalla > [ https://gitbox.apache.org/repos/asf?p=openjpa.git;h=f6e854289 ] > > [OPENJPA-2929] Fill the attributes mapped to the columns of a compound > foreign key with the matching id value > > RowImpl.setJoinRefColumn() compared every attribute column with the first > column of the foreign key for each referenced id column, so with a compound > key one attribute received all id values in turn and the others none. Pass > the owner column joined to the current id column and match against it. > > > > Filling inverse FK columns is broken for compound keys > > ------------------------------------------------------ > > > > Key: OPENJPA-2929 > > URL: https://issues.apache.org/jira/browse/OPENJPA-2929 > > Project: OpenJPA > > Issue Type: Bug > > Components: jdbc > > Affects Versions: 3.1.2, 3.2.2, 4.0.1 > > Reporter: Pawel Veselov > > Priority: Major > > > > Say you have entity A that has a reference to entity B. > > Say entity B is identified by a compound key > > {code:java} > > @Entity > > public class A { > > @Id > > private long id; > > @JoinColumns({ > > @JoinColumn(name = "b_id1", referencedColumnName = "id1"), > > @JoinColumn(name = "b_id2", referencedColumnName = "id2") > > }) > > private B b; > > @Column( > > name = "b_id1", > > insertable = false, > > updatable = false > > ) > > private String bId2; > > @Column( > > name = "b_id2", > > insertable = false, > > updatable = false > > ) > > private String bId2; > > } > > @Entity @IdClass(ID2.class) > > public class B { > > @Id @Column("id1") > > private String id1; > > @Id @Column("id2") > > private String id2; > > } > > public class ID2 { > > private String id1; > > private String id2; > > public ID2() {} > > public ID2(String id1, String id2) { > > this.id1 = id1; > > this.id2 = id2; > > } > > } > > {code} > > After calling {{a.setB(b)}}, and calling {{em.persist(a)}}, the values > of {{a.bId1}} and {{a.bId2}} are either not set, or set to the same value, > either from {{b.id1}} or from {{b.id2}}. > > This is because {{RowImpl.setJoinRefColumn()}} sets values for all A’s > columns that point to B for every B primary key columns. > > > > -- > This message was sent by Atlassian Jira > (v10.3.26#10030026) >
