我在数据库中有Consumer表,我在consumer_type列上有检查约束,如下所示:
ALTER TABLE consumer
ADD CONSTRAINT Check_consumer_consumer_type CHECK (consumer_type IN ('ACCOUNT','ORGANIZATION'))
现在从休眠方面我想添加检查约束注释,它只允许" ACCOUNT"和"组织"消费者类型表中的值。
我应该为此目的使用哪种hibernate / jpa注释?
答案 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, ...
}