我有一个现有的数据库,我现在连接到使用休眠。目前我无法更改其中的数据,并且除了单个列以外的所有内容都可以工作。Hibernate枚举映射使用注释
我有了值的状态栏:
- 新
- 在
- 邮寄
- 出
和列如下映射:
@Column(name = "STATUS", nullable = false, length = 50)
@Enumerated(EnumType.STRING)
private TeamMemberStatus status;
我真的很喜欢(为了应用的原因)把这个列映射为Java Enum(TeamMemberStatus),,但是由于'new'是Java中的关键字,所以我不能将它作为enum成员。
如果我有enum contstants NEW,MAILED,IN和OUT hibernate会因EnumType失败而失败Enum.valueOf()。
有没有什么办法可以将这个映射到我的Enum而无需编写复杂的UserType?
- 添加的内容
我的枚举是这样的:
public enum TeamMemberStatus {
NEW, MAILED, IN, OUT
}
是一个有效的Java枚举,但是不匹配的数据库的情况。如果我改变以匹配如数据库:
public enum TeamMemberStatus {
new, mailed, in, out
}
它不会编译为“新”是一个Java保留字。
我假设你的意思是改变数据库中的数据?像更新TABLE设置状态=上(状态)。 我不能这样做,因为它会打破与那些希望它为小写值的数据交流的现有应用程序。 – stevemac 2010-08-04 00:35:36
@stevemac更新 – 2010-08-04 16:08:01
这就是我最终得出的结果,bascially内部存储字符串,并将其映射到枚举当get/set被调用。 这将需要做的短期内,直到我可以让所有的应用程序更新使用大写常量。 – stevemac 2010-08-05 04:14:15