java - Hibernate 生成带有 JPA @Enumerated 注释的 VARBINARY 列

标签 java hibernate orm jpa

Hibernates 正在生成带有 JPA @Enumerated 注释的 VARBINARY 列。我正在使用带 JTDS 驱动程序的 SQL Server 2005。映射非常简单:

@Basic
@Enumerated(EnumType.ORDINAL)
private MyEnum foo;

我会期望 Hibernate 生成一个整数列吗?我也试过 EnumType.STRING(期望 varchar 列)但没有成功。

请注意,我的应用运行良好;列类型使得检查数据库变得困难,并且在访问数据库时发出即席 SQL。

最佳答案

可能是 SQL Server 特定问题(也许您可以查看 Hibernate SQL Server 方言源以找出所使用的数据类型)。

通常,使用 EnumType.ORDINAL 映射可能不是一个好主意,出于同样的原因,在普通 Java 代码中使用枚举序数也不是一个好主意:添加或删除枚举值可能很容易破坏您的代码,因为它可能会更改现有枚举值的序号。这在 Effective Java, 2nd Ed 中有更详细的讨论。第 6 章,第 31 项。

我还找到了further arguments for this from the DB perspective .

关于java - Hibernate 生成带有 JPA @Enumerated 注释的 VARBINARY 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617898/

相关文章:

java - 游戏速度问题

java - 不带时区的 PostgreSQL 时间戳与带时区的 java.util.Date 的比较

java - 使用 JPQL 或 HQL 时如何将 @OneToMany 字段映射到 List<DTO>?

java - Hibernate 删除具有延迟加载的@ManyToMany 关系中的关系

用于数据库支持集合的 Java 库

c# - 干净的架构和 ORM 的使用

database - 更新数据库和应用程序 ORM 时如何最大程度地减少应用程序停机时间

java - 将数组从 javascript 传递到 back bean

java - 做Java web services要学什么?

java - 谷歌地图将行车路线导出到 kml 文件 - java geogoogle