@Target(value={METHOD,FIELD})
@Retention(value=RUNTIME)
public @interface OrderBy
orderby_listのvalue順序要素の構文は以下の通りです。
orderby_list::= orderby_item [,orderby_item]*
orderby_item::= [property_or_field_name] [ASC | DESC]
ASCもDESCも指定されていない場合、ASC (昇順)が指定されます。
エンティティの関連に順序要素が指定されていない場合、関連したエンティティの主キーによる順序付けが想定されます。
プロパティーまたはフィールド名は、関連するクラスまたはその内部の組み込みクラスの永続化プロパティーまたはフィールドの名前に対応する必要があります。 順序付けで使用されるプロパティーまたはフィールドは、比較演算子がサポートされるカラムに対応していなければなりません。
ドット(".")表記は、組み込み属性内の属性を参照するために使用されます。 ドット表記で使用される各識別子の値は、それぞれの組み込みフィールドまたはプロパティの名前です。
OrderByアノテーションは要素コレクションに適用することができます。
OrderByが基本型の要素コレクションに適用された場合、順序付けは基本型の値で行われ、プロパティーやフィールド名は使用されないでしょう。
順序付けが組み込み型の要素コレクションに順序付けを指定する時には、順序を決定する属性を指定するためにドット表記を使用する必要があります。
OrderByアノテーションはOrderColumnが指定されている場合は使用しません。
Example 1:
@Entity
public class Course {
...
@ManyToMany
@OrderBy("lastname ASC")
public List<Student> getStudents() {...};
...
}
Example 2:
@Entity
public class Student {
...
@ManyToMany(mappedBy="students")
@OrderBy // ordering by primary key is assumed
public List<Course> getCourses() {...};
...
}
Example 3:
@Entity
public class Person {
...
@ElementCollection
@OrderBy("zipcode.zip, zipcode.plusFour")
public Set<Address> getResidences() {...};
...
}
@Embeddable
public class Address {
protected String street;
protected String city;
protected String state;
@Embedded protected Zipcode zipcode;
}
@Embeddable
public class Zipcode {
protected String zip;
protected String plusFour;
}
OrderColumn| 修飾子とタイプ | 任意要素と説明 |
|---|---|
java.lang.String |
value
orderby_list。 |
Translated by @megascus.