2012-04-24 6 views
4

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の遺物ですか?

答えて

2

順序付きリスト(JPA1、JPA2)と索引付きリスト(JPA2)の違いを理解してください。 1つは条件によって要素を順序付け、もう1つは要素が挿入された位置を保持します。彼らはさまざまなユースケースを満たす。 OrderColumnでは、スキーマ生成の目的で列名を指定できます。 OrderByは、検索のための照会メカニズムを提供します。したがって、注釈とXMLの入力が異なるものは何か。

+0

これは私が理解していることです。順序付きリストは、整数だけでなくあらゆるフィールドで並べ替えることができます。しかし、 '@ OrderBy'はなぜフィールドを必要とし、カラム名を使用しないのですか?これは '@ OrderColumn'には意味がないことがわかります。両方ともSQL経由でDBにアクセスする必要があるので、なぜフィールド名を使って '@ OrderBy'の中間ルートに行くのですか?うーん...私は本当にそれを取得しません。 – Kawu

+0

OrderColumnは、インデックス列を追加します。それはOrderByには存在しません。 OrderByは、そのようなインデックスを持たないので、元の注文を保持することはできません – DataNucleus

+0

確かにそうですが、** SQL列名**の代わりに**フィールド名**を期待する理由に答える全体の質問? '@ OrderBy'は列名を使用できませんでしたか?なぜそれはそのように作られたのですか?それは簡単です。私はまだそれを理解していない。 – Kawu

関連する問題