Enums work as primary keys in TopLink and EclipseLink.
DataNucleus supports them, too:
In the attached testcase, JPA, via persistence.xml, creates a database column type of
VARBINARY. The data contained in it is like:
10101100111011010000000000000101~r0000000000011000main.MyEntity$EntityType0000000000000000000000000000000000000000000000000000000000000000000100100000000000000000xr0000000000001110java.lang.Enum0000000000000000000000000000000000000000000000000000000000000000000100100000000000000000xpt0000000000000110TYPE_1 Type 1
That is not what we need.
We need an integer because in the entity class, we specify
@Enumerated(value = EnumType.ORDINAL)
While Enum as ID field is not specifically supported in the JPA specs, it is not specifically excluded, either.
It would be desirable to have the new version of the spec include this feature, too.
The attached testcase (zip file) runs with NetBeans out of the box.
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)
Hibernate JPA as installed with latest NetBeans release 6.9.1