检查hibernate中允许值的约束注释

时间:2015-10-27 11:54:00

标签: java sql hibernate jpa

我在数据库中有Consumer表,我在consumer_type列上有检查约束,如下所示:

ALTER TABLE consumer
    ADD CONSTRAINT Check_consumer_consumer_type CHECK (consumer_type IN ('ACCOUNT','ORGANIZATION'))

现在从休眠方面我想添加检查约束注释,它只允许" ACCOUNT"和"组织"消费者类型表中的值。

我应该为此目的使用哪种hibernate / jpa注释?

1 个答案:

答案 0 :(得分:5)

假设您在实体中使用String表示的消费者类型,您可以轻松地用枚举替换它,而Java的类型安全性将确保您无法将任何其他内容传递给它。

使用EnumType.STRING,这些值将作为字符串存储在数据库中(并在加载实体时映射回枚举),因此不需要对数据进行任何更改。

实施例

@Entity
public class Consumer {

    public static enum ConsumerType {
        ACCOUNT, ORGANIZATION
    }

    @Enumerated(EnumType.STRING)
    @Column(name="consumer_type", nullable=false)
    private ConsumerType consumerType;

    // Other properties, getters/setters, ...
}