0

ユーザーとコメントの2つのエンティティがあり、どちらもPOJOです。コメントにはユーザーへの参照があります。

@ManyToOne
@JoinColumn(name = "user_id")  
private User user;  // saves the User's id as a foreign key to Comment table

コメントには、日付であるフィールドaddedDateもあります。

@OrderBy
@Column(name = "date_added")
private Date addedDate;

Hibernateがデータベースからデータを取得するとき、コメントをaddedDateで並べ替えたいのですが、残念ながらユーザーで並べ替えます。フィールド「addedDate」に@OrderBy(javax.persistence.OrderBy)アノテーションを付けても、効果がないようです。

私が欲しいのはこれです:userX EarlyComment、userY EarlyComment、userX lateComment、userY lateComment、

しかし、私が得たのはこれです:userX EarlyComment、userX lateComment、userY EarlyComment、userY lateComment、

私はここで同様の質問をしているようですが、私が見つけた質問のどれも私の問題を解決しませんでした。
私は何を間違えますか?どんな助けでも大歓迎です。

4

1 に答える 1

2

まず第一に、コレクション要素でorederingを実行できるように、メンバーとしてa@OrderByを持っている場合は、注釈を適用する必要があると思います。Collection

したがって@OrderBy、外部キー参照を追加することは、単一オブジェクトの順序は重要ではないため、役に立ちません。

OrderByの発言を参照してください

このアノテーションは、関連付けが取得された時点でのコレクション値の関連付けの要素の順序を指定します。

ここで、ソリューションでは、DBをクエリするときに明示的にorderby句を追加する必要があります。

于 2012-08-11T10:12:36.913 に答える