Неужели это не делает то, что вам нужно?
Для уточнения начального отклика flippant в справочнике предоставлены средства для использования порядкового номера перечисления для отображения перечислений.
В этом случае это на самом деле проще, чем кажется, поскольку вы размещаете перечисления в наборе, вам нужно предоставить аксессор для WicketType для подтипа IntEnumUserType, супертип позаботится о отображении порядковый номер экземпляру.
package test;
public class WicketTypeState extends IntEnumUserType<WicketType> {
private WicketType wicketType;
public WicketTypeState() {
// we must give the values of the enum to the parent.
super(WicketType.class, WicketType.values());
}
public WicketType getWicketType() {
return wicketType;
}
public void setWicketType(final WicketType wicketType) {
this.wicketType = wicketType;
}
}
Определите сопоставления для таблицы enum:
<hibernate-mapping package="test">
<class name="Wicket" table="Wicket">
<id name="id" column="ID"/>
<set name="wicketTypes" table="WicketType" inverse="true">
<key column="ID"/>
<one-to-many class="test.WicketTypeState"/>
</set>
</class>
</hibernate-mapping>
Затем для типа с набором перечислений определите отображение набора для этого свойства:
<hibernate-mapping package="test">
<class name="WicketTypeState" lazy="true" table="WicketType">
<id name="WicketType"
type="test.WicketTypeState"/>
</class>
</hibernate-mapping>
Это сработало на моей коробке (тм), дайте мне знать, если вам нужна дополнительная информация.