使用spring jpa 时,利用nativeQuery,获取数据,无需新建实体,按照别名返回Json数据

刚开始是这样写的

    @Query(value = "SELECT ll.user_id id ,u.catong_img catong_img,ll.locationId location_id,ll.address address,ll.latitude latitude,ll.longitude longitude,ll.update_time update_time,ll.user_id user_id FROM t_user as u left JOIN (SELECT l.id locationId, address,latitude,longitude,l.update_time,l.user_id FROM t_user_location AS l RIGHT JOIN ( SELECT user_id, max( update_time ) update_time FROM t_user_location GROUP BY user_id ) AS t ON l.user_id = t.user_id AND l.update_time = t.update_time ) ll ON u.zu_id =?1 and u.id = ll.user_id",nativeQuery = true)
    @Transactional
    List getAllUserLocationByZuId(long zuId);

发现返回的数据是这样的,设置的别名没有返回

[
  [
    1,
    "吕志豪",
    "",
    3,
    "3",
    3,
    3,
    1513670259000,
    1
  ],
  [
    2,
    "胡勇",
    "",
    2,
    "2",
    2,
    2,
    1513151843000,
    2
  ]
]

之后是这样写的,使用EntityManager

    @PersistenceContext
    private EntityManager em;
    @Override
    public List getAllUserLocation(long zuId) {
       return em.createNativeQuery("SELECT  u.name name ,u.catong_img catongImg,ll.locationId locationId,ll.address address,ll.latitude latitude,ll.longitude longitude,ll.update_time updateTime,ll.user_id userId FROM t_user as u left JOIN (SELECT l.id locationId, address,latitude,longitude,l.update_time,l.user_id FROM t_user_location AS l RIGHT JOIN ( SELECT user_id, max( update_time ) update_time FROM t_user_location GROUP BY user_id ) AS t ON l.user_id = t.user_id AND l.update_time = t.update_time ) ll ON u.zu_id =1 and u.id = ll.user_id")
        .unwrap(SQLQuery.class)
                .setResultTransformer(
                        AliasToEntityMapResultTransformer.INSTANCE
                )
                .list();
    }

结果返回

[
  {
    "catongImg": "",
    "address": "3",
    "locationId": 3,
    "latitude": 3,
    "name": "吕志豪",
    "updateTime": 1513670259000,
    "userId": 1,
    "longitude": 3
  },
  {
    "catongImg": "",
    "address": "2",
    "locationId": 2,
    "latitude": 2,
    "name": "胡勇",
    "updateTime": 1513151843000,
    "userId": 2,
    "longitude": 2
  }
]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,282评论 19 139
  • //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃呓语阅读 51,614评论 10 200
  • 一直忘不了阿黄的眼神…… 阿黄是一只故宫博物院里的猫。 前几日去参观故宫,下午2点左右,在一家中式餐厅院外,距离门...
    orchidyuan阅读 1,684评论 2 2
  • 很多时候,我们的常态是我们在电话线这头,爸妈在电话线那头,在这万千里之间,是彼此隐忍克制的牵挂。 “真希望总是天黑...
    andy花儿阅读 3,081评论 0 0
  • 儿子十八,正值青春期向成年人转型时期,常持自己独特的观点与我讨论。 而我时刻准备应战。 比如,今天,儿子忿忿地说,...
    百媚阅读 1,774评论 0 1

友情链接更多精彩内容