0
在使用Grails四年後,我已經在Spring Boot中啓動了一個新項目。 在Grails中,我使用了一個域類的實例的屬性字段來更新數據庫表中的關聯行。 domain.properties的分配通常在服務內部完成。 properties
字段是使用來自Web表單的數據設置的。 這種方法允許用一行代替一個域實例,而不是編寫n個代理,其中n是域類中定義的屬性的數量。類似於Spring中的Grails Domain屬性字段?
現在的問題..在春天有類似的東西? 我願做同樣的事情在Spring:
update(Long radioId,Map properties) {
// get the radio to be update from the db
Radio radio = getRadio(radioId)
radio.properties = properties
save(radio)
}
我想補充一些細節, 我控制器
public ModelAndView updateRadio(Radio radio) {
radioService.update(radio);
return new ModelAndView("redirect:/superadmin/radio/"+radio.getIdentifier()+"/zoom");
}
我的服務
@Service
public class RadioService {
...
public void update(Radio radio) {
assert radio.getId() != null;
radioRepository.save(radio);
}
...
}
現在,如果Web表單不明確地發送無線電中定義的所有字段我有問題,因爲我將失去已存儲字段的值。 如果我可以寫這樣的東西
public void update(Map radioProperties,Long radioId) {
Radio radio = radioRepository.findById(radioId);
radio.properties = radioProperties // only properties present in this map will be update (in grails)
radioRepository.save(radio);
}
這將是偉大的。
在後一種方法中,只有地圖中的屬性(ence在web表單中)將被更新,而射頻實例的其他存儲字段將不變。
嗨,我很喜歡使用Spring Data JPA。我已經更新了我的問題,希望能夠更清楚地闡述更多細節。 Thx –
啊,對不起,我一直在處理這個前端,例如使用隱藏字段或服務器端使用@InitBinder進行更復雜的綁定。也許Spring的BeanUtils可以幫助你 - http://docs.spring.io/spring-framework/docs/current/javadoc-api/index.html?org/springframework/beans/BeanUtils.html –
好的謝謝,我會檢查它..但似乎我必須由我自己來執行。 :-) –