Don't be as idiot as I was : use getValue instead of getOrdinal, which is based on the field order. Also always declare a 'value' field, not an 'ordinal' field, as it was done in many case...
Well, it depends always on the use case. Some time ago when I fixed DIRSHARED-64 (Transform IStates and inherited interfaces/implementing classes to enums) I finally realized, that it's not really necessary to have a custom value. Sometimes the use of the ordinal can make sense as well (http://svn.apache.org/viewvc?rev=1028638&view=rev).