@ axtavt: Похоже, ваш ответ неверный.Я только что получил электронное письмо от авторов "Pro JPA 2.0", которые также сами работали над спецификацией JPA.
"В вашем примере класс Zip имеет отношение к стране:
public class Zip implements Serializable
{
@Id
@Column(name = "code")
private String code;
@Id
@ManyToOne
@JoinColumn(name = "country_code", referencedColumnName = "iso_code")
private Country country = null;
...
}
Судя по всему, он пытается указать столбец внешнего ключа country_code на столбец iso_code в таблице Country, который не является PK. JPA никогда не разрешал вам создавать отношения, подобные этой потому что без указания PK страны не было бы способа однозначно определить, какой экземпляр страны находится в отношении. Вы просто сталкиваетесь с проблемой, когда добираетесь до части производного идентификатора, но проблема, по-видимому, заключается в самом недействительном отношении. "
Таким образом, спецификация JPA вообще не разрешает отношения / FK для столбцов без PK ...