我正在使用Hibernate自定义用户类型将枚举映射到表varchar/char。我正在使用此处(https://community.jboss.org/wiki/Java5StringValuedEnumUserType)的自定义用户类型代码。我正在尝试按照注释进行映射,但它不起作用。
@Transient
@Type(type = "data.model.base.StringValuedEnumType", parameters = {
@Parameter(name = "enumClass", value = "data.common.TypeEnum"),
@Parameter(name = "identifierMethod", value = "dbCode") })
private TypeEnum typeEnum;
类型枚举代码:
public enum TypeEnum implements StringValuedEnum {
OFF("OFF", "O"),
ON("ON, "O"),
private String dbCode;
private String desc;
TypeEnum(String desc, String dbCode) {
this.desc=desc;
this.dbCode = dbCode;
}
@Override
public String dbCode() {
return dbCode;
}
public String desc() {
return desc;
}
}
我相信我在注释中做错了什么,但我无法弄清楚它是什么。有人知道吗?
我已经找到了。我通过删除@Transient并添加映射@Column来更新注释。我还更新了代码以处理传递的名称并删除了 defaultValue。
@Column(name = "TYP_CD", length = 1)
@Type(type = "data.model.base.StringValuedEnumType", parameters = {
@Parameter(name = "enumClass", value = "data.common.TypeEnum")})
private TypeEnum typeEnum;