2012-07-12 13 views
8

Jestem bardzo zdezorientowany, w jaki sposób działa mapowanie zestawu wyników kolumn? Co mapuję, gdy używam kolumn zamiast jednostek? Spójrz na ten przykład ...SqlResultSetMapping kolumn i podmiotów

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")} 
     ) 

mogę zrozumieć, co on próbuje zrobić tutaj, wynik Podmiot będzie wynikowa chce, pola spróbuje odwzorować pola do aliasami nazw, co do piekło robi wyniki kolumn? Nie wygląda na to, że mapuje do czegokolwiek.

Odpowiedz

2

Mapujesz 4 pola z zestawu wyników na 2 klasy Java: pierwsza klasa to Obiekt zamówienia, a druga to (prawdopodobnie) Ciąg, który będzie zawierał pole "item_name" db.

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

Aby odczytać wyniki zapytania:

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