title: @JoinColumn must be specified for each join column using the @JoinColumns
body: <p>I am trying to implement many to many relationship with extra column, but gettig below error.
  Could somebody explain why below error is occurring anf how to solve?</p>
  
  <p><code>Internal Exception: Exception [EclipseLink-7220] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.ValidationException
  Exception Description: The @JoinColumns on the annotated element [field extension] from the entity class [class com.polycom.cloudAxis.model.ip.ProfileExtensionMapping] is incomplete. When the source entity class uses a composite primary key, a @JoinColumn must be specified for each join column using the @JoinColumns. Both the name and the referencedColumnName elements must be specified in each such @JoinColumn.
      at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createPredeployFailedPersistenceException(EntityManagerSetupImpl.java:1541)
      at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:1532)
      at org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactory(PersistenceProvider.java:235)</code></p>
  
  <p>Profile</p>
  
  <pre><code>@Entity
  @Table(name = "profile")
  public class Profile extends AbstractPersistable&lt;Long&gt; {
  
  private static final long serialVersionUID = 1L;
  
  @Column(name = "instanceType")
  private InstanceType instanceType;
  
  @Column(name = "isDefault")
  private boolean isDefault;
  
  @Column(name = "profileType")
  private ProfileType profileType;
  
  @OneToMany(mappedBy = "profile")
  private Set&lt;ProfileExtensionMapping&gt; profileExtensionMappings;
  
  @Id
  @Column(name = "profile_id")
  private Long profile_id;
  
  }
  </code></pre>
  
  <p>Extension:</p>
  
  <pre><code>@Table(name = "extension")
  @Entity
  public class Extension extends AbstractPersistable&lt;Long&gt; {
  
  private static final long serialVersionUID = 1L;
  
  @Lob
  @Basic(optional = false)
  @Column(name = "json")
  private byte[] json;
  
  @Id
  @Column(name = "extension_id")
  private Long extension_id;
  
  public Long getExtension_id() {
      return extension_id;
  }
  
  public void setExtension_id(Long extension_id) {
      this.extension_id = extension_id;
  }
  
  @OneToMany(mappedBy = "extension")
  private Set&lt;ProfileExtensionMapping&gt; profileExtensionMappings;
  
  }
  </code></pre>
  
  <p>ProfileExtensionMapping:</p>
  
  <pre><code>@Entity
  @Table(name = "profile_extension_mapping")
  @IdClass(ProfileExtensionPK.class)
  public class ProfileExtensionMapping extends AbstractPersistable&lt;Long&gt; {
  
  private static final long serialVersionUID = 1L;
  
  @Id
  @Column(name = "profile_id", insertable = false, updatable = false)
  private Long profile_id;
  
  @Id
  @Column(name = "extension_id", insertable = false, updatable = false)
  private Long extension_id;
  
  @ManyToOne
  @JoinColumns({ @JoinColumn(name = "profile_id", referencedColumnName = "profile_id",    nullable = false) })
  private Profile profile;
  
  @ManyToOne
  @JoinColumns({ @JoinColumn(name = "extension_id", referencedColumnName = "extension_id", nullable = false) })
  private Extension extension;
  
  @Column(name = "type")
  private ExtensionType extensionType;
  
  @Column(name = "name")
  private ExtensionName extensionName;
  }
  </code></pre>