gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:14:08 26 4
gpt4 key购买 nike

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

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

我曾尝试使用与@Type 注释关联的参数化用户类型,但这似乎并未对数据库列本身提供任何类型的约束。除了在 columnDefinition 元素中使用一些 SQL,似乎没有办法在 @Column 注释中指定这种约束,而且我很犹豫是否要走这条路,因为似乎无论我使用什么都不会跨平台/数据库独立(对我来说很重要,因为我在 Oracle 上运行我的生产代码,但我使用 HSQLDB 和 Derby 在本地进行测试)。也许我想做的只是使用注释无法完成。

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

最佳答案

创建一个 PetType 类型的枚举并将映射定义为

@Enumerated(EnumType.STRING)

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

关于java - 使用注释向 JPA 或 Hibernate 实体列添加约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com