将枚举集合映射到单个varchar列

mja*_*ari 5 java mapping collections enums hibernate

在hibernate中,我需要将Enums集合映射到单个varchar列(例如,以逗号分隔的枚举值列表).

JB *_*zet 1

我真的不会这样做,因为这使得查询你的数据变得不可能。

如果你真的想这样做,那么只需在 setter 中将集合转换为字符串,然后将字符串转换为 getter 中的枚举集合即可。与番石榴:

private String fooValues;

public EnumSet<Foo> getFoos() {
    EnumSet<Foo> result = EnumSet.noneOf(Foo.class);
    for (String fooAsString : Splitter.on(',').split(fooValues)) {
        result.add(Foo.valueOf(fooAsString);
    }
    return result;
}

public void setFoos(EnumSet<Foo> foos) {
    this.fooValues = Joiner.on(",").join(foos);
}
Run Code Online (Sandbox Code Playgroud)