Я использую аннотацию @OrderColumn
Hibernate, чтобы упорядочить список в моей базе данных.Он правильно генерирует столбец в таблице базы данных для хранения индекса, а также изначально сохраняет правильный индекс.
Но когда я пытаюсь изменить порядок в списке, а затем использую метод Spring Roo merge()
для обновления базы данных, порядок не меняется.
Вот код моей сущности:
@RooJavaBean
@RooToString
@RooEntity
public class Story {
@ManyToMany(cascade = CascadeType.ALL)
@OrderColumn
private List<Slide> slides = new ArrayList<Slide>();
@ManyToOne
private Question question;
private String title;
}
Вот метод обновления, который вызывает merge
функцию:
@RequestMapping(method = RequestMethod.PUT)
public String StoryController.update(@Valid Story story, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) {
if (bindingResult.hasErrors()) {
uiModel.addAttribute("story", story);
return "storys/update";
}
uiModel.asMap().clear();
story.merge();
return "redirect:/storys/" + encodeUrlPathSegment(story.getId().toString(), httpServletRequest);
}
Я проверил с помощью отладки, чтообъект story
имеет обновленные индексы в списке slides
.