I have an enum type on my Java model which I'd like to map to a table on the database. I'm working with Hibernate Annotations and I don't know how to do that. Since the answers I search were rather old, I wonder which way is the best?
Thanks in advance
You can specify how the enum should be persisted in the database with the EnumType enum property of the @Enumerated annotation. EnumType. ORDINAL specifies that the enum will be persisted as an integer value. Here, myEnum set to VALUE1 would be persisted as 0, VALUE2 as 1, etc.
By default, Hibernate maps an enum to a number. It uses the ordinal value, which is the zero-based position of a value within the definition of the enum. So, the enum value that's defined first gets mapped to 0, the second one to 1 and so on.
To map the Enum to a String database column type, you need to specify the EnumType. STRING value when using the @Enumerated annotation. As expected, the String representation of the Java Enum was used to populate the associated database column value.
The @Enumerated annotation enables you to define how an enum attribute gets persisted in the database. By default, all JPA implementations map the ordinal value of the enum to a numeric database column.
Do you need something else than the @Enumerated
annotation? For example, the following enum:
public enum MyEnum { VALUE1, VALUE2; }
Could be used and annotated like this:
private MyEnum myEnum; @Column(name="myenum") @Enumerated(EnumType.ORDINAL) public MyEnum getMyEnum() { return myEnum }
You can specify how the enum should be persisted in the database with the EnumType
enum property of the @Enumerated
annotation. EnumType.ORDINAL
specifies that the enum will be persisted as an integer value. Here, myEnum
set to VALUE1
would be persisted as 0, VALUE2
as 1, etc.
The alternative is to use EnumType.STRING
to specify that the enum will be persisted using the name of the enum value that the field is set to. So, applied to the previous example, setting the field myEnum
to MyEnum.VALUE1
will persist as VALUE1
, etc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With