Java &引用;“集合映射中的重复列”;对于hibernate,使用相同外键的多个?

Java &引用;“集合映射中的重复列”;对于hibernate,使用相同外键的多个?,java,hibernate,jpa,many-to-many,Java,Hibernate,Jpa,Many To Many,我有以下4个表格: create table market ( id int(6) unsigned auto_increment primary key, market_id varchar(30) unique ); create table market_channel_group ( id int(6) unsigned auto_increment primary key, market_id varchar(30), channel_grou

我有以下4个表格:

create table market (
    id int(6) unsigned auto_increment primary key,
    market_id varchar(30) unique
);

create table market_channel_group (
    id int(6) unsigned auto_increment primary key,
    market_id varchar(30),
    channel_group_id varchar(30),
    unique index (market_id,channel_group_id)
);

create table market_channel (
    id int(6) unsigned auto_increment primary key,
    market_id varchar(30),
    channel_id varchar(30),
    unique index (market_id,channel_group_id)
);

create table market_channel_group_detail (
    id int(6) unsigned auto_increment primary key,
    market_id varchar(30),
    channel_group_id varchar(30),
    channel_id varchar(30),
    unique index (market_id,channel_group_id, channel_id)
);
正如你们所看到的,市场是一对一的市场渠道集团,市场渠道。 市场渠道集团是指在特定市场条件下,对市场渠道进行多种选择的集团

问题在于我的市场\渠道\集团实体,我有以下代码:

@Entity(name = "market_channel_group")
@Table(name = "market_channel_group", uniqueConstraints = {@UniqueConstraint(columnNames = {"market_id", "channel_group_id"})})
public class MarketChannelGroup extends BaseEntity {

    private static final long serialVersionUID = 1L;

    public MarketChannelGroup() {
        super();
    }

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private int id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "market_id", referencedColumnName = "market_id")
    private Market market;

    @Column(name = "channel_group_id", length = 50)
    private String channelGroupId;

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "market_channel_group_detail",
            joinColumns = {@JoinColumn(name = "market_id", referencedColumnName = "market_id"), @JoinColumn(name = "channel_group_id", referencedColumnName = "channel_group_id")},
            inverseJoinColumns = {@JoinColumn(name = "market_id", referencedColumnName = "market_id"), @JoinColumn(name = "channel_id", referencedColumnName = "channel_id")})
    private List<MarketChannel> channels;

...
}
我应该如何正确地编写多个注释?或者我的设计有什么问题

更新
由于我们将从外部资源导入数据,自动增量id不会用作其他表的引用,每个表都有自己id以外的另一个索引。

对于我来说,通过将
insertable=false,updateable=false
添加到
@JoinColumn
解决了这个问题吗?您是否为此创建了一个Hibernate问题?
Caused by: org.hibernate.MappingException: Repeated column in mapping for collection: MarketChannelGroup.channels column: market_id
    at org.hibernate.mapping.Collection.checkColumnDuplication(Collection.java:343) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
...