使用注释向JPA或Hibernate实体列添加约束

时间:2010-08-27 15:44:00

标签: java hibernate orm annotations entity

我希望有一个实体的列,它只接受一组枚举值。例如,假设我有一个POJO /实体类“Pet”,其字符串列为“petType”。我希望petType只允许三个值中的一个:“cat”,“dog”或“gorilla”。我如何开始注释getPetType()方法,以便创建一个强制执行此操作的数据库级约束?

我允许Hibernate在应用程序启动时通过Hibernate属性“hbm2ddlauto”设置为“update”来创建或更新我的数据库表。

我尝试使用与@Type注释关联的参数化用户类型,但这似乎不会对数据库列本身提供任何类型的约束。似乎没有办法在@Column注释中指定这种类型的约束,而不是使用带有columnDefinition元素的SQL,并且我对这条路线犹豫不决,因为看起来我在那里使用的任何东西都不会跨平台/数据库独立(对我来说很重要,因为我在Oracle上生产我的代码,但我使用HSQLDB和Derby在本地进行测试)。也许我想要做的只是简单地使用注释。

提前感谢您提供有关此主题的任何见解。

1 个答案:

答案 0 :(得分:3)

创建一个PetType类型的枚举,并将您定义为

  

@Enumerated(EnumType.STRING)

这样,字符串存储在数据库中,而你的java enum类型只接受你指定的3个值。