Hibernate – 如何映射EnumSet

我有一个Color Enum

public enum color { GREEN, WHITE, RED } 

我有包含它的MyEntity。

 public class MyEntity { private Set colors; ... 

我已经有一个UserType来映射我的枚举。
你知道如何在Hibernate hbm.xml中映射一组枚举吗?
我需要UserType还是最简单的方法?
谢谢

编辑:只是为了评论,我正在寻找hbm.xml配置而不是@CollectionOfElements Annotation

我使用EnumSet映射线程中的解决方案,它依赖于 。 你只需要一个带有id和字符串的表来映射集合(这里是MYENTITY_COLOR )。 并且映射看起来像( EnumUserType是来自Java 5 EnumUserType的那个 ):

     com.stackoverflow.q2402869.Color             

查询可能如下所示:

 select distinct e from MyEntity e join e.colors colors where colors IN ('WHITE', 'GREEN') 

整个解决方案适用于加载,保存和查询 (jasonab的信用)。

看来你需要使用@CollectionOfElements注释。 该文件位于http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection-extratype ,第2.4.6.2.5章。 元素或复合元素的集合’。 该示例还映射了一组枚举。