表格中有SET(https://dev.mysql.com/doc/refman/5.7/en/set.html)类型字段:SET('A','B')
。
并且枚举:
public enum Foo {
A, B
}
所以我想将该字段映射到Set<Foo>
:
@Entity
public class Bar {
...
@Column(name="foos")
private Set<Foo> foos;
...
}
或者我想知道至少使用Hibernate读取MySQL SET的任何方法。
答案 0 :(得分:2)
有趣的问题!不幸的是,hibernate无法处理特定于数据库的数据类型。 (至少我不是没有意识到它,所以随时纠正我:))
您可以将此视为String
这么简单,并在getter中解析它:
@Entity
class Bar {
...
@Column(name = "foos")
private String foos;
public Set<Foo> getFoos() {
return (null == foos) ?
Collections.emptySet() :
Arrays.stream(foos.split(",")).map(Foo::valueOf).collect(Collectors.toSet());
}
...
}
我承认,这不是 ORM / Hibernate-way 的做法,但是它可以很好地完成工作。