Jpa 如何覆盖超类中定义的唯一约束

Jpa 如何覆盖超类中定义的唯一约束,jpa,Jpa,下面是看起来像这样的超级类 public abstract class BaseType { @Basic(optional = false) @Column(name = "code", length = 8, unique = true, nullable = false) private String code; ......... } public class ChildEntity extends BaseType { @Basic(o

下面是看起来像这样的超级类

public abstract class BaseType {

    @Basic(optional = false)
    @Column(name = "code", length = 8, unique = true, nullable = false)
    private String code;

    .........

}
public class ChildEntity extends BaseType {

    @Basic(optional = false)
    @Column(name = "group_id", nullable = false)
    private Long groupId;

    ......
}
我继承了这个类,创建了一个JPA实体,如下所示

public abstract class BaseType {

    @Basic(optional = false)
    @Column(name = "code", length = 8, unique = true, nullable = false)
    private String code;

    .........

}
public class ChildEntity extends BaseType {

    @Basic(optional = false)
    @Column(name = "group_id", nullable = false)
    private Long groupId;

    ......
}
我需要创建一个“代码”和“组id”的组合作为唯一的

我尝试添加唯一约束,但没有成功。只有“代码”总是被认为是唯一的,但不是两者都是

@Table(name = "table_name", uniqueConstraints = @UniqueConstraint(columnNames = {
        "code", "group_id"}))
如何覆盖子类中BaseType中定义的unique=“true”


请提供帮助。

您可以使用
@AttributeOverride
注释:

@Entity
@Table(name = "table_name")
@AttributeOverride(name = "code", column = @Column(name = "code", unique = false))
public class ChildEntity extends BaseType {

@Basic(optional = false)
@Column(name = "group_id", nullable = false)
private Long groupId;
}

您尝试添加代码和组id作为实体?的键。另一个问题是:哪一个是PK?。