I have a table DEAL and a table DEAL_TYPE. I would like to map this code:
public class Deal { DealType type; } public enum DealType { BASE('Base'), EXTRA('Extra'); }
The problem is that the data already exist in the database. And I’m having a hard time mapping the classes to the database.
The database looks something like that:
TABLE DEAL { Long id; Long typeId; } TABLE DEAL_TYPE { Long id; String text; }
I know I could use a simple @OneToMany relationship from deal to deal type, but I would prefer to use an enum. Is this possible?
I almost got it working by using a EnumType.ORDINAL type. But unfortunately, my IDs in my deal type table are not sequential, and do not start at 1.
Any suggestions?
Hibernate is kind of terrible at Enums. It’s a strange failing of an otherwise pretty good ORM. The ‘easiest’ way to get around it is to declare your Enum a custom hibernate type. Fortunately, Hibernate wrote an example implementation which you can crib verbatim into your app:
http://www.hibernate.org/265.html
They even include instructions on how to use it. This is the pattern I use whenever I end up with the need to persist enums.