2

順序を維持する1対多のマッピングを行いたいです。注文自体は複雑で、ビジネス ロジックに関連しており、それを表す単一のフィールドや単純なロジックはありません。

私が望むのは、オブジェクトをロードし、リスト内の 2 つ (またはそれ以上) の要素を交換し、保存して実行することです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

 }
4

3 に答える 3

3

@OrderColumn私のためにトリックをしました

于 2013-03-03T07:38:55.210 に答える
2

を使用javax.persistence.OrderByすると、通常はほとんどの場合に機能する複数の列で並べ替えることができます。

順序がより複雑な場合は、メモリ内で並べ替えを実行し、並べ替えられたリストを(変更不可として)返す別のメソッドを追加することをお勧めします。

すべての場合において、Hibernateがスワップされたエンティティを更新する方法を理解するようにリスト内の要素をスワップできるソリューションは存在しないと思います(1つのフィールドの順序のみでも):子を更新する必要があります自分でエンティティ。

于 2013-02-21T10:38:19.440 に答える
1

これは、まさに Hibernate での LIST マッピングの目的です。

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

@OrderBy を使用する必要がある注釈については、http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/collections.html#collections-indexed を参照してください

于 2013-02-21T10:20:52.367 に答える