2

有効な 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必要に応じて、列挙型用に別のテーブルを使用することもできます。

4

1 に答える 1