What's the exact difference between @JoinColumn and @PrimaryKeyJoinColumn?

You use @JoinColumn for columns that are part of a foreign key. A typical column could look like (e.g. in a join table with additional attributes):

@ManyToOne
@JoinColumn(name = "...")
private OtherClass oc;

What happens if I promote the column to be a/the PK, too (a.k.a. identifying relationship)? As the column is now the PK, I must tag it with @Id:

@Id
@ManyToOne
@JoinColumn(name = "...")
private OtherClass oc;

Now the question is:

Are @Id + @JoinColumn the same as just @PrimaryKeyJoinColumn?:

@ManyToOne
@PrimaryKeyJoinColumn(name = "...")
private OtherClass oc;

If not, what's @PrimaryKeyJoinColumn there for?

Edit
Report