1

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

注釈で何か間違ったことをしていると思いますが、それが何であるかを理解できません。誰かアイデアはありますか?

4

1 に答える 1

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;
于 2013-09-17T16:39:45.650 に答える