使用@Parameter的Hibernate注释不起作用

时间:2013-09-16 19:53:13

标签: java spring hibernate jpa hibernate-annotations

我正在使用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;

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;
}
}

我相信我在注释中做错了但我无法弄清楚它是什么。任何人都不知道吗?

1 个答案:

答案 0 :(得分:2)

我找到了它。我通过删除@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;