hibernate在model中注解的主键更改,级联操作怎么改

主表product
@GeneratedValue(strategy = GenerationType.AUTO)
public int getID() {
return ID;
}

public void setID(int iD) {
    ID = iD;
}
@Id
public String getProductCode() {
    return ProductCode;
}

public void setProductCode(String productCode) {
    ProductCode = productCode;
}
.
.
.
@OneToMany(targetEntity = ProductChannel.class, mappedBy = "product", cascade = CascadeType.ALL)
@JoinColumn(name = "ProductCode", updatable = false)
public Set<ProductChannel> getProductChannelSet() {
    return productChannelSet;
}

public void setProductChannelSet(Set<ProductChannel> productChannelSet) {
    this.productChannelSet = productChannelSet;
}

@OneToMany(targetEntity = ProductPriority.class, mappedBy = "product", cascade = CascadeType.ALL)
@JoinColumn(name = "ProductCode", updatable = false)
public Set<ProductPriority> getProductPrioritySet() {
    return productPrioritySet;
}

public void setProductPrioritySet(Set<ProductPriority> productPrioritySet) {
    this.productPrioritySet = productPrioritySet;
}

表ProductChannel
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int getID() {
    return ID;
}

public void setID(int iD) {
    ID = iD;
}

@Transient
public String getProductCode() {
    return ProductCode;
}

public void setProductCode(String productCode) {
    ProductCode = productCode;
}

@ManyToOne(targetEntity = Product.class, cascade = CascadeType.PERSIST)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "ProductCode")
public Product getProduct() {
    return product;
}

public void setProduct(Product product) {
    this.product = product;
}


表ProductPriority
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int getID() {
    return ID;
}

public void setID(int iD) {
    ID = iD;
}

@Transient
public String getProductCode() {
    return ProductCode;
}

public void setProductCode(String productCode) {
    ProductCode = productCode;
}

@ManyToOne(targetEntity = Product.class, cascade = CascadeType.PERSIST)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "ProductCode")
public Product getProduct() {
    return product;
}

public void setProduct(Product product) {
    this.product = product;
}

现在是要把表product的主键设为ID,ProductCode设为唯一键,外键都不变,下面两个表需要怎么改呢

e在model中注解的主键更改,级联操作怎么改
主表product
@GeneratedValue(strategy = GenerationType.AUTO)
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
@Id
public String getProductCode() {
return ProductCode;
}

public void setProductCode(String productCode) {
ProductCode = productCode;
}
.
.
.