У меня есть контроллер, который должен обновлять любой объект в базе данных, как я могу сделать так, чтобы установщики объектов вызывались на основе ключей свойств этого объекта?
Я слышал, что рефлексия может быть ответом на мои молитвы, так ли это, и если да, то какой самый элегантный способ достичь того, что я ищу?
Object entity = repository.findOne(id);
for (Object key : request.getParameterMap().keySet()) {
//invoke setter-method of entity
//for example, if key == "name" , i want entity.setName() to be called
}
repository.save(entity)
Я использую Spring MVC. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать!
ОБНОВЛЕНИЕ, рабочий код:
Object entity = repository.findOne(id);
BeanWrapper beanWrapper = new BeanWrapperImpl(entity);
for (Object key : request.getParameterMap().keySet()) {
beanWrapper.setPropertyValue(key.toString(), request.getParameterMap().get(key));
}
repository.save(entity);