Как сопоставлять 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;

    //...

Ответы (0 шт):