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')