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)
>

Reply via email to