Pawel Veselov created OPENJPA-2929: -------------------------------------- Summary: 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: 4.0.1, 3.2.2, 3.1.2 Reporter: Pawel Veselov
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 set randomly, 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 (v8.20.10#820010)