Как сопоставлять CollectionTable и сущности с составным ключом
Есть три сущности Menu, User , Vote. В качестве первичного ключа для Vote использую составной EmbeddedId (menu_id, user_id). Хочу в Menu подгрузить список Vote, но при попытке выполнения получаю ошибку
Foreign key (FKjybwlha08w6apx3k92e2mv2ri:vote [vote_menu_id,vote_user_id])) must have same number of columns as the referenced primary key (vote [menu_id,vote_menu_id,vote_user_id])
Понимаю, что неверно указываю условия JoinColumn, но как это сделать верно пока не нашла. Подскажите, пожалуйста.
Классы, которые использую:
@Embeddable
public class VotingKey implements Serializable {
@Column(name = "menu_id", nullable = false)
@Basic(optional = false)
@NotNull
private Integer menuId;
@Column(name = "user_id", nullable = false)
@Basic(optional = false)
@NotNull
private Integer userId;
public VotingKey(){}
@Access(AccessType.FIELD)
@Entity
@Table(name = "vote")
public class Vote {
@EmbeddedId
private VotingKey id;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("menu_id")
@OnDelete(action = OnDeleteAction.CASCADE)
@NotNull
private Menu menu;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("user_id")
@OnDelete(action = OnDeleteAction.CASCADE)
@NotNull
private User user;
//...
@Entity
@Table(name = "menu")
public class Menu extends AbstractBaseEntity {
//...
@CollectionTable(name = "vote", joinColumns = @JoinColumn(name = "menu_id"))
@ElementCollection(fetch = FetchType.LAZY)
private Set<Vote> vote;
//...