STS に Roo で生成されたプロジェクトがあり、MongoDB で動作するように更新/削除メソッドをカスタマイズしようとしています (更新と削除をカスケードするため)。親が更新 (削除) されたときに子を更新 (削除) するサービス メソッドを作成しました。
public class NoteServiceImpl implements NoteService {
@Autowired
MongoTemplate mongoTemplate;
public void updateNotesWithNoteBook(Notebook notebook) {
Update update = new Update().set("notebook.name", notebook.getName())
.set("notebook.author", notebook.getAuthor());
Query query = Query.query(Criteria.where("notebook._id").is(
new ObjectId(notebook.getId().toString(16))));
mongoTemplate.updateMulti(query, update, Note.class);
}
...the similar for delete action
NoteService インターフェイスは Roo によって生成され、次のようになります。
@RooService(domainTypes = { org.dp.mongo.shortnotes.domain.Note.class })
public interface NoteService {
}
親エンティティ Notebook の Roo controller*.aj から Notebook コントローラー クラスへの update メソッドと detete メソッドのプッシュイン リファクタリングを行い、子のサービス メソッドへの呼び出しを追加しました。
@RequestMapping("/notebooks")
@Controller
@RooWebScaffold(path = "notebooks", formBackingObject = Notebook.class)
public class NotebookController {
@Autowired
private NoteService noteService;
@RequestMapping(method = RequestMethod.PUT, produces = "text/html")
public String update(@Valid Notebook notebook, BindingResult bindingResult,
Model uiModel, HttpServletRequest httpServletRequest) {
if (bindingResult.hasErrors()) {
populateEditForm(uiModel, notebook);
return "notebooks/update";
}
uiModel.asMap().clear();
notebookService.updateNotebook(notebook);
**noteService.updateNotesWithNoteBook(notebook);**
return "redirect:/notebooks/"
+ encodeUrlPathSegment(notebook.getId().toString(),
httpServletRequest);
}
the similar for delete method...
最後に、noteService にメソッド updateNotesWithNoteBook と delete メソッドがないというエラーが発生しました。それらを修正する方法は?