gpt4 book ai didi

java - 使用 Hibernate 在 Postgresql 中持久化 EnumSet

转载 作者:行者123 更新时间:2023-11-29 11:59:50 25 4
gpt4 key购买 nike

Effective Java , Item 32, states 使用 EnumSet 而不是位域。我还找到了this nice tutorial关于这个话题。这本书已经出版有一段时间了,为什么我找不到任何关于如何使用 Hibernate 持久化 EnumSet 的帖子?好吧,我实际上找到了 this one , 和 another one ,但它们都很旧,指向相同且更旧的解决方案,不幸的是,这对我没有帮助,也许是因为我缺乏更深入的 hibernate 知识?这是我的代码的摘要:

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 表的新列中,但如果需要,我也可以使用单独的枚举表。

最佳答案

试试这个

@ElementCollection
@CollectionTable(name = "my_options",
joinColumns = @JoinColumn( name = "mything_id"))
@Column(name = "option")
@Enumerated(EnumType.STRING)
private Set<MyOptions> options;

使用此配置,您需要一个名为 my_options 的数据库表,其中包含 option 列和 mything_id 目标 MyThing表。

关于java - 使用 Hibernate 在 Postgresql 中持久化 EnumSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28879684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com