Java hibernate注释:映射保持顺序的列表

Java hibernate注释:映射保持顺序的列表,java,hibernate,hibernate-annotations,Java,Hibernate,Hibernate Annotations,我想做一个一对多的映射来保持秩序。订单本身很复杂,与业务逻辑相关,没有一个字段或简单的逻辑来表示它 我想要的是加载一个对象,交换列表中的两个(或更多)元素,保存并执行session.update(object)。我希望下一次加载元素时保持正确的顺序,但是它没有 我在做什么: @Entity public class Product { @Id @GeneratedValue(strategy=GenerationType.AUTO) private long id; @OneToMany(f

我想做一个一对多的映射来保持秩序。订单本身很复杂,与业务逻辑相关,没有一个字段或简单的逻辑来表示它

我想要的是加载一个对象,交换列表中的两个(或更多)元素,保存并执行
session.update(object)
。我希望下一次加载元素时保持正确的顺序,但是它没有

我在做什么:

@Entity
 public class Product {

@Id @GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@OneToMany(fetch=FetchType.EAGER)
private List<Image> images = new ArrayList<Image>();

  blah blah blah

 }
@实体
公共类产品{
@Id@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
@OneToMany(fetch=FetchType.EAGER)
私有列表图像=新的ArrayList();
废话废话
}

这正是Hibernate中列表映射的目的:

   <list name="friends">
      <key column="M_ID" not-null="true"/>
      <list-index column="M_INDEX"/>
      <one-to-many class="Person"/>
   </list>


有关需要使用@OrderBy的注释,请参见
javax.persistence.OrderBy

,您可以对多个列进行排序,这通常在大多数情况下都有效

如果顺序更复杂,我建议添加一个单独的方法,在内存中执行排序并返回排序列表(不可修改)


在所有情况下,我认为没有一种解决方案可以允许交换列表中的元素,这样Hibernate就可以理解如何更新交换的实体(即使只有order on 1字段):您必须自己更新子实体。

@OrderColumn
为我做了这件事。

谢谢。请参考hibernate注释。(我已澄清我的问题)