【发布时间】:2015-05-06 22:19:56
【问题描述】:
Effective Java,第 32 项,声明使用 EnumSet 而不是位字段。我还在该主题上找到了this nice tutorial。这本书已经有一段时间了,为什么我没有找到任何关于如何使用 Hibernate 持久化 EnumSet? 的帖子?好吧,我实际上找到了 this one 和 another one,但他们两者都很老,指向相同且更老的解决方案,不幸的是,这对我没有帮助,也许是因为我缺乏更深入的休眠知识?这是我的代码摘要:
public class MyThing {
public enum MyOptions {
FLAG1, FLAG2
}
@Id
private Long id;
@Column(name = "options")
private EnumSet<MyOptions> options;
// [other fields, getters, setters etc]
}
我尝试过其他注释,例如
@ElementCollection
有和没有(targetClass = MyOptions.class)
和
@JoinTable(name = "my_options",
joinColumns = @JoinColumn(name = "id"))
还有
@OneToMany
@JoinColumn(name = "options")
但没有运气。
最好将信息存储在my_thing 表的新列中,但如果需要,我也可以使用单独的枚举表。
【问题讨论】:
标签: java hibernate postgresql enums enumset