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

时间:2014-01-30 07:12:53

标签: jpa

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

public abstract class BaseType {

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

    .........

}

我继承了这个类并创建了一个JPA实体,就像这样。

public class ChildEntity extends BaseType {

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

    ......
}

我需要创建“code”和“group_id”的组合作为唯一。

我尝试过添加uniqueConstraints但没有用。并且只有“代码”始终被认为是唯一的,但不是两者。

@Table(name = "table_name", uniqueConstraints = @UniqueConstraint(columnNames = {
        "code", "group_id"}))

如何覆盖子类中BaseType中定义的unique =“true”。

请帮忙。

1 个答案:

答案 0 :(得分:3)

您可以使用@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;
}