Вы пытаетесь определить @ManyToMany, или вы пытаетесь эмулировать @ManyToMany с двумя @ManyToOnes? Кажется, вы делаете оба, но это не сработает.
У вас есть два варианта. Во-первых, @ManyToMany:
create table service_channel (
service_id int not null,
channel_id int not null,
primary key (service_id, channel_id));
ServiceRegistration.java
@ManyToMany
@JoinTable(name = "service_channel",
joinColumns = @JoinColumn(name="service_id"),
inverseJoinColumns = @JoinColumn(name="channel_id"))
private Set<Channel> channels;
Channel.java
@ManyToMany(mappedBy = "channels")
private Set<Service> services;
где ServiceChannel.java не существует. Во-вторых, вы можете повысить ServiceChannel до статуса объекта и смоделировать все это с помощью двух @OneToManys:
create table service_channel (
id int not null primary key,
service_id int not null,
channel_id int not null);
ServiceChannel.java:
@ManyToOne
@JoinColumn(name = "service_id")
private Service service;
@ManyToOne
@JoinColumn(name = "channel_id")
private Channel channel;
Service.java:
@OneToMany(mappedBy = "service")
private ServiceChannel serviceChannel;
Channel.java:
@OneToMany(mappedBy = "channel")
private ServiceChannel serviceChannel;