Java EE 6ドキュメントJPA 1.0 @OrderBy
は、フィールド名とJPA 2.0を使用します。@OrderColumn
はアノテーションを宣言するときにカラム名を使用します。ここで参照:JPA 1.0 @OrderByはフィールド名とJPA 2.0を使用します。@OrderColumnは列名を使用します
http://docs.oracle.com/javaee/6/api/javax/persistence/OrderBy.html
http://docs.oracle.com/javaee/6/api/javax/persistence/OrderColumn.html
を前者はJPA 1.0から利用可能であり、後者は、JPA 2.0を添加しました。すぐにドキュメントを読むと、@OrderBy
はフィールド/プロパティを使用して順序を指定しますが、@OrderColumn
はSQL/DDL列名を使用することが明らかになります。
どうしてそうなったのですか?私にはこれは矛盾しているように見えます。
このようなことが起こった理由について詳しく知りたいですか? JPA 1.0の遺物ですか?
これは私が理解していることです。順序付きリストは、整数だけでなくあらゆるフィールドで並べ替えることができます。しかし、 '@ OrderBy'はなぜフィールドを必要とし、カラム名を使用しないのですか?これは '@ OrderColumn'には意味がないことがわかります。両方ともSQL経由でDBにアクセスする必要があるので、なぜフィールド名を使って '@ OrderBy'の中間ルートに行くのですか?うーん...私は本当にそれを取得しません。 – Kawu
OrderColumnは、インデックス列を追加します。それはOrderByには存在しません。 OrderByは、そのようなインデックスを持たないので、元の注文を保持することはできません – DataNucleus
確かにそうですが、** SQL列名**の代わりに**フィールド名**を期待する理由に答える全体の質問? '@ OrderBy'は列名を使用できませんでしたか?なぜそれはそのように作られたのですか?それは簡単です。私はまだそれを理解していない。 – Kawu