Buggy code:
@ RepositoryRestController class RepositoryEntityController extends AbstractRepositoryRestController implements ApplicationEventPublisherAware { private static final String BASE_MAPPING = "//{repository}" ; private final EntityLinks entityLinks ; private final PersistentEntityResourceAssembler < Object > perAssembler ; private final RepositoryRestConfiguration config ; private final DomainClassConverter < ? > converter ; private final ConversionService conversionService ; private final DomainObjectMerger domainObjectMerger ; private ApplicationEventPublisher publisher ; @ Autowired public RepositoryEntityController ( Repositories repositories , RepositoryRestConfiguration config , EntityLinks entityLinks , PagedResourcesAssembler < Object > assembler , PersistentEntityResourceAssembler < Object > perAssembler , DomainClassConverter < ? > converter , @ Qualifier ( "defaultConversionService" ) ConversionService conversionService , DomainObjectMerger domainObjectMerger ) { } @ Override public void setApplicationEventPublisher ( ApplicationEventPublisher publisher ) { } @ ResponseBody @ RequestMapping ( value = RepositoryEntityController . BASE_MAPPING , method = RequestMethod . GET ) public Resources < ? > listEntities ( final RepositoryRestRequest request , Pageable pageable , Sort sort ) throws ResourceNotFoundException { } @ ResponseBody @ SuppressWarnings ( { "unchecked" } ) @ RequestMapping ( value = RepositoryEntityController . BASE_MAPPING , method = RequestMethod . GET , produces = { "application//x-spring-data-compact+json" , "text//uri-list" } ) public Resources < ? > listEntitiesCompact ( final RepositoryRestRequest repoRequest , Pageable pageable , Sort sort ) { } @ ResponseBody @ RequestMapping ( value = RepositoryEntityController . BASE_MAPPING , method = RequestMethod . POST , consumes = { "application//json" } ) public ResponseEntity < ResourceSupport > createNewEntity ( RepositoryRestRequest repoRequest , PersistentEntityResource < ? > incoming ) { } @ RequestMapping ( value = ( RepositoryEntityController . BASE_MAPPING ) + "//{id}" , method = RequestMethod . GET ) public ResponseEntity < Resource < ? > > getSingleEntity ( RepositoryRestRequest repoRequest , @ PathVariable String id ) { } @ RequestMapping ( value = ( RepositoryEntityController . BASE_MAPPING ) + "//{id}" , method = RequestMethod . PUT , consumes = { "application//json" } ) public ResponseEntity < ? extends ResourceSupport > updateEntity ( RepositoryRestRequest request , PersistentEntityResource < Object > incoming , @ PathVariable String id ) { RepositoryInvoker invoker = request . getRepositoryInvoker ( ) ; if ( ( ! ( invoker . exposesSave ( ) ) ) || ( ! ( invoker . exposesFindOne ( ) ) ) ) { return new ResponseEntity < Resource < ? > > ( HttpStatus . METHOD_NOT_ALLOWED ) ; } Object domainObj = converter . convert ( id , STRING_TYPE , TypeDescriptor . valueOf ( request . getPersistentEntity ( ) . getType ( ) ) ) ; if ( null == domainObj ) { BeanWrapper < ? , Object > incomingWrapper = BeanWrapper . create ( incoming . getContent ( ) , conversionService ) ; PersistentProperty < ? > idProp = incoming . getPersistentEntity ( ) . getIdProperty ( ) ; incomingWrapper . setProperty ( idProp , conversionService . convert ( id , idProp . getType ( ) ) ) ; return createNewEntity ( request , incoming ) ; } domainObjectMerger . merge ( incoming . getContent ( ) , domainObj ) ; publisher . publishEvent ( new org . springframework . data . rest . core . event . BeforeSaveEvent ( incoming . getContent ( ) ) ) ; <START_BUG> Object obj = invoker . invokeSave ( domainObj ) ; <END_BUG> publisher . publishEvent ( new AfterSaveEvent ( obj ) ) ; if ( config . isReturnBodyOnUpdate ( ) ) { return ControllerUtils . ControllerUtils . toResponseEntity ( OK , null , perAssembler . toResource ( obj ) ) ; } else { return ControllerUtils . ControllerUtils . toResponseEntity ( NO_CONTENT , null , null ) ; } } @ RequestMapping ( value = ( RepositoryEntityController . BASE_MAPPING ) + "//{id}" , method = RequestMethod . DELETE ) public ResponseEntity < ? > deleteEntity ( final RepositoryRestRequest repoRequest , @ PathVariable final String id ) throws ResourceNotFoundException , HttpRequestMethodNotSupportedException { } }

Fix:
Object obj = invoker . invokeSave ( incoming . getContent ( ) ) ;