2012-02-05 3 views
2

Я использую аннотацию Hibernate's @OrderColumn, чтобы заказать список в моей базе данных. Он правильно генерирует столбец в таблице базы данных для хранения индекса, а также сначала сохраняет правильный индекс.Hibernate OrderColumn with Spring Roo

Но когда я пытаюсь изменить порядок в списке, а затем использовать метод Spring 2012 Roo's 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.

ответ

0

Когда вы говорите:

Он правильно генерирует столбец в таблице базы данных для индекса хранилища, а также сохраняет правильный индекс первоначально.

Уверены ли вы в этом? Когда я создал образец проекта с сопоставлением спящего режима, похожим на ваши «Истории и слайды», в промежуточную таблицу ничего не вставлялось. Убедитесь, что таблица соединений между историями и слайдами заполнена вообще. Вы можете добавить

log4j.logger.org.hibernate.SQL=DEBUG 

к log4j.properties и осмотрите бревно.

Мне пришлось добавить явную @JoinTable в ассоциацию, чтобы все операции были каскадированы правильно.

@ManyToMany(cascade = CascadeType.ALL) 
@JoinTable 
@OrderColumn 
private List<Slide> slides = new ArrayList<Slide>(); 
Смежные вопросы