OpenmrsData and OpenmrsMetadata extend Auditable. Historically, if a given class doesn't support some fields – e.g if it's immutable, we just exclude the changedBy and dateChanged fields in the database table and the hbm files but this leaves redundant methods behind.
One of the benefits of introducing Creatable and Changeable interfaces is a class like Order can be tweaked to extend BaseOpenmrsObject and implement Creatable, Voidable, and Serializable and you can also annotate it separately with JPA annotations. Currently separate JPA annotations on Order are not possible, since Order extends BaseOpenmrsData that has annotated changedBy and dateChanged fields, which are not in the orders table, hence hibernate freaks out.
Add the interfaces and abstract classes below
Update Auditable to the signature below and remove all existing methods
Update Order class to this
You might need to update some code that was written based on the Auditable interface but specific to creator or changedBy fields e.g in AuditableInterceptor the logic should work for an Object that is Creatable but not Changeable and vice versa
There are other openmrs data classes that are not changeable (don't have changedBy and dateChanged fields) and are Voidable that might need to be updated to extend BaseOpenmrsImmutableData e.g ConceptName, ConceptNameTag, Obs