首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlResultSetMapping列作为和实体

SqlResultSetMapping列作为和实体
EN

Stack Overflow用户
提问于 2012-07-12 21:11:06
回答 1查看 9.2K关注 0票数 8

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

代码语言:javascript
复制
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")}
       )

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

EN

回答 1

Stack Overflow用户

发布于 2013-11-05 22:09:10

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

代码语言:javascript
复制
DB:                         Java
---                         ----
order_id              --->  \
order_quantity        --->  Order entity
order_item            --->  /
item_name             --->  String

为了读取查询结果:

代码语言:javascript
复制
for (Object[] record : query.getResultList()) {
   Order order = (Order)record[0];
   String itemName = (String)record[1];
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11452586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档