0

有没有办法避免休眠中@Column注释的columnDefinition属性?
假设我在数据库中的表中有一个列,该列定义为 enum('US', 'IN', 'GB', 'DE'etc) 即 enum of all country codes 。我将它映射到使用休眠注释表示表的 java 类中的属性“country_code”。但是没有定义 columnDefinition hibernate 会抛出一个异常,说
org.hibernate.HibernateException: Wrong column type for 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 属性时,它会起作用。

4

2 回答 2

1

您指定的代码缺少定义,希望这能解决问题。

   public enum EmployeeStatus {FULL_TIME, PART_TIME, CONTRACT}

   public enum SalaryRate {JUNIOR, SENIOR, MANAGER, EXECUTIVE}

   @Entity public class Employee {
       public EmployeeStatus getStatus() {...}
       ...
       @Enumerated(STRING)
       public SalaryRate getPayScale() {...}
       ...
   }

这里的例子

于 2013-10-15T10:21:05.437 回答
0

你错过了@Enumerated(EnumType.STRING),使用它@Column

于 2013-10-14T23:41:05.933 回答