【发布时间】:2011-04-04 21:24:39
【问题描述】:
我想要一个实体列,它只接受一组枚举值中的一个。例如,假设我有一个带有字符串列“petType”的 POJO/实体类“Pet”。我希望 petType 只允许以下三个值之一:“cat”、“dog”或“gorilla”。我将如何注释 getPetType() 方法以便创建一个数据库级别的约束来强制执行此操作?
我允许 Hibernate 在应用程序启动时通过将 Hibernate 属性“hbm2ddlauto”设置为“update”来创建或更新我的数据库表。
我尝试使用与@Type 注释关联的参数化用户类型,但这似乎没有对数据库列本身提供任何类型的约束。除了使用带有 columnDefinition 元素的一些 SQL 之外,似乎没有办法在 @Column 注释中指定这种约束,而且我犹豫要不要走这条路,因为似乎我使用的任何东西都不会跨平台/数据库独立(对我来说很重要,因为我在 Oracle 上运行我的生产代码,但我使用 HSQLDB 和 Derby 在本地进行测试)。也许我想做的事情不能简单地使用注释来完成。
提前感谢您就该主题提供的任何见解。
【问题讨论】:
-
这里有同样的问题。令人惊讶的是似乎没有办法做到这一点?
标签: java hibernate orm annotations entity