我用Hitbernate持久化Enum时。使用@Enumerated(EnumType.ORDINAL),一直没有问题。有一次,一样这样使用的时候结果抱错误 xxx.xxxx.Xxxx.0 找不到。我是用ORDINAL啊,怎么会把0做为名称了呢。找了很久错误,看了一下Hibernate的EnumType源代码。原来在nullSafeGet中
Hibernate并不是根据@Enumerated(EnumType.ORDINAL)注释去生成Enum,而是根据数据库中字段的类型去生成Enum。由于数据库中错误的把类型建成了varchar。所以Hibernate自然的就用0做为了Enum的名称去生成。修改数据库中字段类型后,错误就没有了。
没有评论:
发表评论