我有一个彩色Enum
public enum color { GREEN, WHITE, RED } 我有包含它的MyEntity。
public class MyEntity {
private Set<Color> colors;
...我已经有了一个UserType来映射我的Enum。
您知道如何在Hibernate hbm.xml中映射一组Enum吗?
我需要一个UserType还是有一个最简单的方法?
谢谢
编辑:只是想说明一下,我正在寻找的是hbm.xml配置,而不是@CollectionOfElements注释
发布于 2010-03-09 01:49:48
我使用来自EnumSet映射线程的解决方案,它依赖于<element column>的使用。您只需要一个带有id和字符串的表来映射集合(这里是MYENTITY_COLOR)。映射看起来是这样的( EnumUserType是来自Java 5 EnumUserType的映射):
<?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')整个解决方案适用于负载、保存和查询(jasonab的学分)。
发布于 2010-03-08 16:45:38
您似乎需要使用@CollectionOfElements注释。文档位于单个/#实体-hibspec-集合-附加类型,第2.4.6.2.5章,元素或复合元素的集合。该示例还映射了一组Enum。
https://stackoverflow.com/questions/2402869
复制相似问题