【发布时间】:2013-10-21 22:50:08
【问题描述】:
有没有办法避免hibernate中@Column注解的columnDefinition属性?
假设我在数据库中的表中有一个列,它被定义为 enum('US', 'IN', 'GB', 'DE'etc) 即 enum of all country codes 。我将它映射到使用休眠注释表示表的 java 类中的属性“country_code”。但是没有定义 columnDefinition 休眠会抛出一个异常说
org.hibernate.HibernateException:country_code 的列类型错误。找到枚举,应为 varchar。
有没有办法避免@Column注解中的columnDefinition属性?
例如:
private UserType userType;
@Column(name="user_type")
@Enumerated(EnumType.STRING)
public UserType getUserType() {
return userType;
}
public void setUserType(UserType userType) {
this.userType = userType;
}
当我使用这个映射运行应用程序时,它会抛出一个异常:
org.hibernate.HibernateException: Wrong column type in gobe_user_db.gobe_User for column user_type. Found: enum, expected: varchar(255)
但是,当我将“columnDefinition="enum('abc', 'xyz')”添加到@Column 属性时,它会起作用。
【问题讨论】:
-
请发布一些代码。你的问题我不清楚...
-
映射到数据库中枚举的标准方法是在 Java 代码中使用枚举。您是否尝试映射到 java 代码中的字符串?
-
我只映射到枚举。但是如果@Column 注释中没有 columnDefinition 属性,则会引发异常。
标签: java mysql hibernate hibernate-mapping