1

オブジェクトに@ManyToOneリレーションがあり、「1」側に@OneToManyリレーションがありません。この状況で、@ IndexColumnを追加するにはどうすればよいですか?そして、@ ONeToOneリレーションに@indexColumnを追加できますか?

4

1 に答える 1

1

あなたの質問はあまり意味がありません。IndexColumn は、OneToMany または ManyToMany 関連付けで List の要素にインデックスを割り当てるために使用されます。ManyToOne 関連付けがあるだけなので、リストはまったくないため、インデックス列は必要ありません。

親のすべての子を返すクエリを実行し、それらを特定のインデックスのリストに配置する必要があると想像できます。この場合、永続インデックス フィールドを子エンティティに追加し、クエリを実行し、子をインデックスで並べ替えてから、自分でインデックス付きリストを作成する必要があります。

List<Child> sortedList = 
    session.createQuery("select c from Child c where c.parent = :parent order by c.index")
           .setParameter("parent, parent)
           .list();
List<Child> indexedList = new ArrayList<Child>();
for (Child child : sortedList) {
    indexedList.ensureCapacity(child.getIndex() + 1);
    indexedList.set(child.getIndex(), child);
}

OneToOne アソシエーションの場合、IndexColumn はまったく意味がありません。

于 2012-07-18T10:45:07.900 に答える