Hibernate可以自动管理子集合的顺序吗?

时间:2011-09-15 07:34:07

标签: java hibernate

鉴于Parent类有很多Children,Hibernate可以自动管理所述孩子的顺序吗?从阅读文档和搜索,似乎@OrderColumn注释可以启用此功能,但我没有找到任何如何执行此操作的示例。我发现最接近的是JPA 2.0 @OrderColumn annotation in Hibernate 3.5,看起来有点令人沮丧,因为它看起来就像我想做的那样。

这是我正在尝试做的一个粗略草图,减去注释,因为我不确定它们会是什么:

class Parent {
  // I probably need some sort of @OrderColumn annotation here, right?
  private List<Child> children = new ArrayList<Child>;
}

class Child {
  private Parent parent;
  private int order;
}

class SomeBusinessLogic {
  public static void createFamily() {
    Parent dad = new Parent("Tom");
    List<Children> children = dad.getChildren();
    children.add(new Child("Alice");
    children.add(new Child("Bob");
    children.add(new Child("Carl");
    session.save(dad);
  }

  public static void addChild(Parent parent) {  // assuming Tom is passed in
    List<Children> children = parent.getChildren();
    children.add(1, new Child("Zelda");
    session.save(parent);
    // now, the order should be: Alice, Zelda, Bob, Carl
  }
}

如果有人可以给我足够的细节让这个玩具示例起作用(或告诉我它不起作用),我会非常感激。

1 个答案:

答案 0 :(得分:1)

为了按顺序存储子项,您应该使用@IndexedColumn注释对其进行映射,它将在子对象表上创建索引列。