@Target(value={})
@Retention(value=RUNTIME)
public @interface ConstructorResult
SqlResultSetMappingアノテーションと共に使用します。
ターゲットクラスのコンストラクタを適用し、指定されたカラムを引数の値として渡します。
意図されたコンストラクタの引数に対応するすべてのカラムはコンストラクタの引数のリストと同じ順序で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リストのカラムを意図したコンストラクタの引数に順序どおりに行うマッピング。
|
java.lang.Class |
targetClass
(必須) コンストラクタが呼び出されるクラス。
|
public abstract ColumnResult[] columns
Translated by @megascus.