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