有没有办法在hibernate中避免@Column注释的columnDefinition属性?
假设我在DB中的表中有一列,定义为枚举('US','IN','GB','DE'etc),即所有国家代码的枚举。我将它映射到java类中的属性'country_code',表示使用hibernate注释的表。但是如果没有定义columnDefinition,hibernate会抛出一个例外说明
org.hibernate.HibernateException:country_code的列类型错误。找到enum,期望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;
}
当我使用此映射运行应用程序时,它会抛出一个Exception:
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属性时,它可以工作。
答案 0 :(得分:0)
您错过了@Enumerated(EnumType.STRING)
,将其与@Column
答案 1 :(得分:0)
您指定的代码缺少定义,希望这样可以解决问题。
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() {...}
...
}
查看here示例