Split the representations of values and identity. Introduced an Entity class that represents an identity, containing it's identifier and value. This avoids many awkward areas related to when id values should or should not be populated and eliminated the need to use builders as the entity representations in some cases.
Added Jackson annotation to collapse properties from nested value object in Entity into same JSON object as id.