【问题标题】:Can Hibernate automatically manage the order of child collections?Hibernate 可以自动管理子集合的顺序吗?
【发布时间】:2011-09-15 07:34:07
【问题描述】:

给定一个有很多ChildrenParent 类,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
  }
}

如果有人能给我足够的细节来让这个玩具示例工作(或告诉我它不会工作),我将不胜感激。

【问题讨论】:

  • 这看起来像是 2902553 的副本。看看@OrderBy
  • Xavi,我对保存Parent时订单栏的自动更新更感兴趣。当我从数据库中获得Parent 时,向Parent 添加@OrderColumn 注释可以正确地对子项进行排序,但我不知道如何保持重新排序。 @OrderBy 只处理问题的一部分,因此对我来说还不够。
  • 你想按给定的顺序插入集合吗?
  • @Udo:是的,我希望新的子记录按照子列表的顺序插入。

标签: java hibernate


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-11-12
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多