Here's the complete code for this scenario solution:
// ... public void modifySomeEntityDetails( final SomeEntityDetails details) throws AppException, InformationalException { // retrieve the instance of the entity final SomeEntity someEntity = someEntityDAO .get(details.details.someEntityID); // set the fields setSomeEntityDetails(someEntity, details.details); // do the modify, passing the version number from the client someEntity.modify(details.details.versionNo); } /** * Maps client details to the setters on the service-layer API * * @param someEntity * the service-layer instance of the entity * @param someEntityDtls * the client details to map * */ private void setSomeEntityDetails(final SomeEntity someEntity, final SomeEntityDtls someEntityDtls) { // map the details someEntity.setName(someEntityDtls.name); final DateRange dateRange = new DateRange(someEntityDtls.startDate, someEntityDtls.endDate); someEntity.setDateRange(dateRange); // ...more mappings } // ...