How do I make a change to a production entity?
There are times when there is a need to make a change via code to a production entity and as such, bypassing the sandboxing bounds.
To do so we can leverage the EnterpriseStateManagerImpl.getEnterpriseStateManager().startProductionAdminFilterState(); functionality. When this is set, the changes will be made directly to production. Once this is complete, be sure to flip the switch back via the EnterpriseStateManagerImpl.getEnterpriseStateManager().endProductionAdminFilterState();. Here is a sample of how this would look like:
try {
// this ensures that we can make admin production level changes
EnterpriseStateManagerImpl.getEnterpriseStateManager().startProductionAdminFilterState();
// Custom code to make changes to a production entity...
} finally {
EnterpriseStateManagerImpl.getEnterpriseStateManager().endProductionAdminFilterState();
}
The usual will still apply such as needing to have a @Transactional annotation on the method and calling into a Service/Dao to save it.