@TargetSE(valueSE={}) @RetentionSE(valueSE=RUNTIMESE) public @interface ConstructorResult
SqlResultSetMapping アノテーションと組み合わせて使用して、SQL クエリの SELECT 句をコンストラクターにマッピングします。 ターゲットクラスのコンストラクターを適用し、指定された列から値を引数として渡します。目的のコンストラクターの引数に対応するすべての列は、コンストラクターの引数リストと同じ順序で ConstructorResult アノテーションの columns 要素を使用して指定する必要があります。コンストラクターの結果として返されるエンティティは、構築されたオブジェクトの主キーが取得されるかどうかに応じて、新しい状態または切り離された状態になります。
Example:
Query q = em.createNativeQuery(
"SELECT c.id, c.name, COUNT(o) as orderCount, AVG(o.price) AS avgOrder " +
"FROM Customer c, Orders o " +
"WHERE o.cid = c.id " +
"GROUP BY c.id, c.name",
"CustomerDetailsResult");
@SqlResultSetMapping(
name="CustomerDetailsResult",
classes={
@ConstructorResult(
targetClass=com.acme.CustomerDetails.class,
columns={
@ColumnResult(name="id"),
@ColumnResult(name="name"),
@ColumnResult(name="orderCount"),
@ColumnResult(name="avgOrder", type=Double.class)
}
)
}
)
SqlResultSetMapping, ColumnResult| 修飾子と型 | 必須要素と説明 |
|---|---|
ColumnResult[] | columns(必須)SELECT リストの列を、目的のコンストラクターの引数に順番にマッピングします。 |
ClassSE | targetClass(必須)コンストラクターが呼び出されるクラス。 |
public abstract ClassSE targetClass
public abstract ColumnResult[] columns
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.