簡體   English   中英

在Hibernate中將EnumSet保留在Postgresql中

[英]Persisting EnumSet in Postgresql with Hibernate

有效的Java (條款32)指出,使用EnumSet代替位字段。 我還找到了關於該主題的這篇不錯的教程 這本書已經存在了一段時間了,所以我為什么找不到關於如何使用Hibernate持久保存EnumSet的文章 好吧,我實際上找到了這個另一個 ,但是它們都相當古老,它們指向相同且更舊的解決方案,但是不幸的是,這對我沒有幫助,也許是因為我缺乏更深入的冬眠知識? 這是我的代碼摘要:

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的列optionmything_id靶向MyThing表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM