SqlResultSetMapping列为和实体

我真的很困惑,列结果集映射如何工作? 当我使用列而不是实体时,我映射的是什么? 看看这个例子……

Query q = 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, Item i " + "WHERE (order_quantity > 25) AND (order_item = i.id)", "OrderResults"); @SqlResultSetMapping(name="OrderResults", entities={ @EntityResult(entityClass=com.acme.Order.class, fields={ @FieldResult(name="id", column="order_id"), @FieldResult(name="quantity", column="order_quantity"), @FieldResult(name="item", column="order_item")})}, columns={ @ColumnResult(name="item_name")} ) 

我可以理解他在这里要做的是什么,实体结果将是他想要的结果集,字段将尝试将字段映射到别名,列结果到底是怎么回事? 它看起来不像是映射到任何东西。

您将结果集中的4个字段映射到2个Java类:第一个类是Order实体,第二个类是(可能)包含“item_name”db字段的String。

 DB: Java --- ---- order_id ---> \ order_quantity ---> Order entity order_item ---> / item_name ---> String 

为了读取查询结果:

 for (Object[] record : query.getResultList()) { Order order = (Order)record[0]; String itemName = (String)record[1]; }