@JsonCreator was to address the issue of the json value as string, instead of enum object.
You're correct in your observation. The @JsonCreator annotation is indeed used to address the issue of deserializing JSON values into enum objects, not specifically for handling negative ids.
Given the context you've provided, it seems the issue might be related to how the enum values are being populated in the byId map.