вівторок, 14 серпня 2012 р.

JPA @Id with @ManyToOne

Использовать одновременно аннотации @Id и @ManyToOne на одном и том же поле невозможно. Поэтому необходимо использовать EmbeddedId. Тогда конструкция вида:
@Entity
public class Foo {

    @Id
    @ManyToOne
    @JoinColumn(name = "key", nullable = false)
    private int externalKey;

    @Column
    private String value;
    
    ...
}

Принимает вид:
@Entity
public class Foo {

    @Embeddable
    public static class Pk implements Serializable {

        @ManyToOne
        @JoinColumn(name = "key", nullable = false)
        private int externalKey;

        ...
    }

    @Column
    private String value;

    @EmbeddedId
    private Pk pk;
    
    ...
}