【问题标题】:Hibernate OrderColumn with Spring Roo使用 Spring Roo 的休眠 OrderColumn
【发布时间】:2012-02-05 21:42:57
【问题描述】:

我正在使用 Hibernate 的 @OrderColumn 注释在我的数据库中排序一个列表。它在数据库表中正确生成列来存储索引,并且最初还存储正确的索引。

但是当我尝试更改列表中的排序然后使用 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 列表中具有更新的索引。

【问题讨论】:

    标签: java hibernate spring jpa spring-roo


    【解决方案1】:

    当你说:

    它在数据库表中正确生成列来存储索引,并且最初也存储了正确的索引。

    你确定吗?当我创建一个带有类似于您的故事和幻灯片的休眠映射的示例项目时,没有任何东西被插入到中间表中。确保完全填充故事和幻灯片之间的连接表。你可以添加

    log4j.logger.org.hibernate.SQL=DEBUG
    

    log4j.properties 并检查日志。

    我必须向关联中添加一个显式的@JoinTable,以便正确地级联所有操作。

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable
    @OrderColumn
    private List<Slide> slides = new ArrayList<Slide>();
    

    【讨论】:

      猜你喜欢
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多