Annotation Interface ColumnResult
@Target(METHOD)
@Retention(RUNTIME)
@Repeatable(ColumnResult.ColumnResults.class)
public @interface ColumnResult
Used in conjunction with the
SqlResultSetMapping,
NamedNativeQuery, or ConstructorResult
annotation to map a column of the SELECT list of
a SQL query to a scalar (non-entity) value.
The name() element references the name of a column
in the SELECT list—that is, the column alias,
if applicable. Scalar result types can be included in the
query result by specifying this annotation in the metadata.
Consider the following SQL query:
Query ordersWithItemNames =
em.createNativeQuery(
"""
SELECT o.id AS order_id,
o.quantity AS order_quantity,
o.item AS order_item,
i.name AS item_name
FROM Order o,
JOIN Item i ON o.item = i.id
WHERE o.quantity > 25
""",
ResultMappings_.MAPPING_ORDERS_WITH_ITEM_NAMES
);
The result set mapping might be defined as follows:
@SqlResultSetMapping(
name = "OrdersWithItemNames",
entities = @EntityResult(
entityClass = Order.class,
fields = {
@FieldResult(name = Order_.ID,
column = "order_id"),
@FieldResult(name = Order_.QUANTITY,
column = "order_quantity"),
@FieldResult(name = Order_.ITEM,
column = "order_item")
}
),
columns = @ColumnResult(name = "item_name")
)
interface ResultMappings {}
At runtime, a ColumnResult annotation is represented by an
instance of ColumnMapping
in the ResultSetMapping
returned by EntityManagerFactory.getResultSetMappings(Class).
This annotation may be placed directly on a method annotated
NativeQuery.
@NativeQuery("SELECT count(*) AS title_count FROM books WHERE title LIKE :pattern")
@ColumnResult(name="title_count")
int countBooks(String pattern);
- Since:
- 1.0
- See Also:
-
Nested Class Summary
Nested Classes -
Required Element Summary
Required Elements -
Optional Element Summary
Optional Elements
-
Element Details