Java Hibernate-如何映射枚举集

Java Hibernate-如何映射枚举集,java,hibernate,orm,enums,set,Java,Hibernate,Orm,Enums,Set,我有一个颜色列表 public enum color { GREEN, WHITE, RED } 我有一个包含它的实体 public class MyEntity { private Set<Color> colors; ... 公共类MyEntity{ 私人设置颜色; ... 我已经有一个用户类型来映射我的枚举。 您知道如何在Hibernate hbm.xml中映射一组枚举吗? 我需要用户类型还是有最简单的方法?谢谢 编辑:我只是想说一句,我要找的是hbm.xm

我有一个颜色列表

public enum color { GREEN, WHITE, RED } 
我有一个包含它的实体

public class MyEntity {
   private Set<Color> colors;
   ...
公共类MyEntity{
私人设置颜色;
...
我已经有一个用户类型来映射我的枚举。
您知道如何在Hibernate hbm.xml中映射一组枚举吗?
我需要用户类型还是有最简单的方法?
谢谢


编辑:我只是想说一句,我要找的是hbm.xml配置,而不是@CollectionFelements注释似乎你需要使用@CollectionFelements注释。文档位于“2.4.6.2.5.元素或复合元素的集合”章节。该示例还映射了一组枚举。

我使用了so依赖于使用
的线程的lution。您只需要一个带有id和字符串的表来映射集合(
MYENTITY\u COLOR
此处)。映射如下所示(EnumUserType是来自:


整个解决方案适用于加载、保存和查询(归功于jasonab).

相关:重复问题:重复?!我正在寻找hbm.xml配置。我已经知道如何通过注释实现这一点,但这不是我需要的。谢谢你的回答。实际上,我正在使用xml映射我的java类,我想知道是否有一种简单的方法来实现相同的CollectionOfElements已弃用。ElementCollect离子替代了它。
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <typedef name="color" class="com.stackoverflow.q2402869.EnumUserType">
        <param name="enumClassName">com.stackoverflow.q2402869.Color</param>
    </typedef>
    <class name="com.stackoverflow.q2402869.MyEntity" entity-name="MyEntity" table="MYENTITY">
        <id name="id" type="java.lang.Long">
            <column name="ID" />
            <generator class="assigned" />
        </id>
        <set name="colors" table="MYENTITY_COLORS">
            <key column="ID" not-null="true"/>
            <element type="color" column="COLOR"/>
        </set>
    </class>
</hibernate-mapping>
select distinct e from MyEntity e join e.colors colors where colors IN ('WHITE', 'GREEN')