Нужно было сделать составной ключ.
@Data @Entity @Table
public class Country {
@Id
@Column(columnDefinition = "smallint")
private int code; // ISO 3166-1 numeric
@Column(nullable = false, unique = true, length = 64)
private String locality; // Локальное название страны (на родном языке страны)
@Column(columnDefinition = "char(2)", unique = true, nullable = false)
private String codeAlpha2; // ISO 3166-1 alpha-2
@Column(columnDefinition = "char(3)", unique = true, nullable = false)
private String codeAlpha3; // ISO 3166-1 alpha-3
@OneToMany(mappedBy = "countryTranslatePK.country")
private Set<CountryTranslate> translate = new HashSet<>();
}
...
@Data @Entity @Table
public class Language {
@Id
@Column(columnDefinition = "CHAR(2)")
private String code; // Код языка по стандарту ISO 639-1
@Column(unique = true, nullable = false, length = 24)
private String laguage; // Локальное название языка
}
...
@Data @Entity @Table
public class CountryTranslate {
@EmbeddedId
private CountryTranslatePK countryTranslatePK;
@Column(nullable = false)
private String translate;
}
...
@Data @Embeddable
public class CountryTranslatePK implements Serializable {
@ManyToOne @JoinColumn(name="language_code")
private Language language;
@ManyToOne @JoinColumn(name="country_code")
private Country country;
}