java - 使用 Spring Roo 的 Hibernate OrderColumn

标签 java hibernate spring jpa spring-roo

我正在使用 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 列表中具有更新的索引。

最佳答案

当你说:

It correctly generates the column in the database table to store index and also stores the correct index initially.

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

log4j.logger.org.hibernate.SQL=DEBUG

log4j.properties 并检查日志。

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

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

关于java - 使用 Spring Roo 的 Hibernate OrderColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9153318/

相关文章:

java - 拖动框架时如何在文本字段下方设置 JWindow 的位置?

java - 如何在 Android 应用程序中处理购物车和付款?

hibernate 错误 java.lang.NoSuchMethodError

java - 如何将自定义 DaoAuthenticationProvider 加载到 Spring 上下文中?

java - Spring:无法将 String 作为构造函数参数注入(inject) xml 定义的 bean 中

java 从 List<B> 转换为 List<A>,其中 B 扩展了 A

java - Vaadin 多个浏览器窗口/选项卡

java - 严重 : org. hibernate.MappingException:命名查询未知:

java - 使用 Spring 3+Hibernate JPA 时发现 JPA 注释类

spring - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http ://cxf. apache.org/jaxws] - 包括 cxf-rt-frontend-jaxrs