Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SqlResultsMapping列作为和实体_Java_Jpa_Entities_Sqlresultsetmapping - Fatal编程技术网

Java SqlResultsMapping列作为和实体

Java SqlResultsMapping列作为和实体,java,jpa,entities,sqlresultsetmapping,Java,Jpa,Entities,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, " + "FRO

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

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字段的字符串

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];
}