so enums are covered. no problem there.
for the others, if we want JPA, we need to add a String field next to e.g. the dom element. then a listener will convert the dom element in the persisted string representation and vice versa.
same technique could be applied for other use cases like the converter mappings.
the downside is of course that some fields are only used for persistence, while others are to be used only at runtime in the class implementation. the classes are going to look more messy.
all in all. this is not good but no showstopper