Hibernate уже имеет тип Enum . Это часть дистрибутива Hibernate Annotations, а не Hibernate Core, однако вы можете использовать его с сопоставлениями XML, указав тип явно:
<property name="myEnum" type="org.hibernate.type.EnumType"/>
Я не пытался указать Enum в качестве ключа карты, если честно - я не понимаю, почему он не будет работать, но документация Hibernate говорит, что ключ карты может быть "базовым" введите, и возможно, что EnumType не будет квалифицироваться.
Обратите внимание, однако, что ваша Карта НЕ будет EnumMap при загрузке из базы данных. Hibernate возвращает коллекции в виде своих собственных типов, которые реализовали соответствующие интерфейсы (например, Map / Set / List ...). Если для вас очень важно иметь свою Карту в качестве EnumMap (чего не должно быть - кроме незначительного улучшения производительности, то не должно быть никакой разницы), чем вам придется писать собственный тип - для самой Карты, а не для Enum. Это довольно сложно, потому что для коллекций это должно быть разыменовано в запросах - я бы настоятельно рекомендовал не идти по этому пути.