【发布时间】:2010-08-03 12:45:51
【问题描述】:
我有一个现有的数据库,我现在正在使用休眠连接。我目前无法更改其中的数据,并且除了单个列之外,所有内容都可以正常工作。
我有一个包含以下值的状态列:
- 新
- 邮寄
- 在
- 出来
并且列映射如下:
@Column(name = "STATUS", nullable = false, length = 50)
@Enumerated(EnumType.STRING)
private TeamMemberStatus status;
我真的很希望(出于应用程序的原因)将此列映射为 Java 枚举 (TeamMemberStatus),但由于“new”是 Java 中的关键字,我不能这样做作为枚举成员。
如果我有枚举常量 NEW、MAILED、IN 和 OUT,休眠会在 EnumType 内部失败,它会执行 Enum.valueOf()。
我有什么方法可以将它映射到我的 Enum 而无需编写复杂的 UserType?
--添加的内容
我的枚举是这样的:
public enum TeamMemberStatus {
NEW, MAILED, IN, OUT
}
是一个有效的 Java 枚举,但与数据库的大小写不匹配。如果我将其更改为与数据库匹配,例如:
public enum TeamMemberStatus {
new, mailed, in, out
}
它不会编译,因为 'new' 是 Java 保留字。
【问题讨论】:
标签: java hibernate annotations enums