@Repeatable(value=NamedQueries.class) @Target(value=TYPE) @Retention(value=RUNTIME) public @interface NamedQuery
NamedQueryアノテーションはエンティティ(Entityの付いたクラス)やマップドスーパークラス(MappedSuperclassの付いたクラス)に適用できます。
以下はJPQLの名前付きクエリーの定義の例です。
@NamedQuery(
name="findAllCustomersWithName",
query="SELECT c FROM Customer c WHERE c.name LIKE :custName"
)
以下は名前付きクエリーの使用方法の例です。
@PersistenceContext
public EntityManager em;
...
customers = em.createNamedQuery("findAllCustomersWithName")
.setParameter("custName", "Smith")
.getResultList();
| 修飾子とタイプ | 必須要素と説明 |
|---|---|
java.lang.String |
name
(必須) クエリーオブジェクトを作成する
EntityManagerのメソッドでクエリを参照するために使用される名前。 |
java.lang.String |
query
(必須) JPQLのクエリー文字列。
|
| 修飾子とタイプ | 任意要素と説明 |
|---|---|
QueryHint[] |
hints
(オプション) クエリープロパティとヒント。
|
LockModeType |
lockMode
(オプション) クエリー実行で使用されるロックモードタイプ。
|
public abstract java.lang.String name
EntityManagerのメソッドでクエリを参照するために使用される名前。public abstract LockModeType lockMode
lockModeにLockModeType.NONE以外が指定されている場合、クエリーはトランザクション内で実行されなければならず、
永続化コンテキストはトランザクションに参加する必要があります。public abstract QueryHint[] hints
Translated by @megascus.