hibernate注释建表的时候总提示重复的外键管理

我的实体集如下
package com.vscut.erp.model;

import javax.persistence.*;
import java.util.Set;

/** 数据字典商品分类

  • Created by ShuD on 2016/5/24.
    */
    @Entity
    @Table(name="dictGoodClass")
    public class DictGoodClass extends DataDictBase{
    @Id
    @SequenceGenerator(name = "good_generator", sequenceName = "GOOD_SEQ")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "good_generator")
    @Column(unique = true, nullable = false, precision = 5, scale = 0)
    private long id;
    private String code;
    private String name;
    @ManyToOne
    private DictUnit unit1;
    @ManyToOne
    private DictUnit unit2;
    private String permissionCode;//许可证代码
    private String normalTax;//普通税率
    private String favTax;//优惠税率
    private String exportTax;//出口税率
    private String consumeTax;//消费税率
    private String addTax;//增值税率
    @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="dictGoodClass")
    private Set factors;
    private String remark;
    @Column(nullable = false, length = 255)
    public String getCode() {
    return code;
    }

    public void setCode(String code) {
    this.code = code;
    }
    @Column(nullable = false, length = 20)
    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public long getId() {
    return id;
    }

    public void setId(long id) {
    this.id = id;
    }

    public DictUnit getUnit1() {
    return unit1;
    }

    public void setUnit1(DictUnit unit1) {
    this.unit1 = unit1;
    }

    public DictUnit getUnit2() {
    return unit2;
    }

    public void setUnit2(DictUnit unit2) {
    this.unit2 = unit2;
    }

    public Set getFactors() {
    return factors;
    }

    public void setFactors(Set factors) {
    this.factors = factors;
    }

    public String getRemark() {
    return remark;
    }

    public void setRemark(String remark) {
    this.remark = remark;
    }

    public String getAddTax() {
    return addTax;
    }

    public void setAddTax(String addTax) {
    this.addTax = addTax;
    }

    public String getConsumeTax() {
    return consumeTax;
    }

    public void setConsumeTax(String consumeTax) {
    this.consumeTax = consumeTax;
    }

    public String getExportTax() {
    return exportTax;
    }

    public void setExportTax(String exportTax) {
    this.exportTax = exportTax;
    }

    public String getFavTax() {
    return favTax;
    }

    public void setFavTax(String favTax) {
    this.favTax = favTax;
    }

    public String getNormalTax() {
    return normalTax;
    }

    public void setNormalTax(String normalTax) {
    this.normalTax = normalTax;
    }

    public String getPermissionCode() {
    return permissionCode;
    }

    public void setPermissionCode(String permissionCode) {
    this.permissionCode = permissionCode;
    }
    }

然后每次程序运行的时候它都会报对于DictUnit对象存在重复的引用约束,我想问这个问题怎么解决....
不好意思直接就贴代码,但是真的怎么百度都百度不到,求大神,谢谢了

@ManyToOne
private DictUnit unit1;
@ManyToOne
private DictUnit unit2;
应该是这里吧。在同一类下,你怎么定义了两个many to one 呢?
改成many to many
private Set< DictUnit> unit;