文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于spring data jpa@query返回map的踩坑分析

2023-06-25 16:44

关注

这篇文章主要介绍“基于spring data jpa@query返回map的踩坑分析”,在日常操作中,相信很多人在基于spring data jpa@query返回map的踩坑分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于spring data jpa@query返回map的踩坑分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

spring data jpa @query返回map踩坑记录

最近用spring data jpa,网上看的一些教程,有的说是返回的Object[]数组,有的说是直接返回的对象,亲身验证了一下,发现主要看写法和返回结果。

用的版本是这样的:

基于spring data jpa@query返回map的踩坑分析

dao代码如下:

public interface UserRepository extends JpaRepository<User, Integer> { @Query(value = "select u.userId,u.userName,u.realName from User u where u.realName = :realName")public Object[] getUserByRealName2(@Param("realName") String realName);@Query(value = "select u from User u where u.realName = :realName")public User getUserByRealName3(@Param("realName") String realName);@Query(value = "select new map(u as user) from User u where u.realName = :realName")public List<Map<String, Object>> getUserByRealName(@Param("realName") String realName);@Query(value = "select new map(u.realName as userName,o.orgName as orgName) from User u, Org o where u.realName = :realName")public Map<String, Object> getUserByRealName1(@Param("realName") String realName);}

测试的代码如下,完全没什么问题。

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath:conf/root-context.xml"})public class UserDaoTest {@Autowiredprivate UserRepository userRepository; @Testpublic void test() {Object[] u2 = userRepository.getUserByRealName2("admin");User u3 = userRepository.getUserByRealName3("admin");List<Map<String, Object>> u = userRepository.getUserByRealName("test");String userName = ((User) u.get(0).get("user")).getRealName();System.out.println(userName);Map<String, Object> u1 = userRepository.getUserByRealName1("admin");String name = ((User) u1.get("userName")).getRealName();System.out.println(name);assert(userName.equals("admin"));}}

设置JPA的Query返回Map对象

说明正常执行jpa查询的时候需要传一个对应实体进行映射返回的数据,这样有时候如果一个sql是复合sql关联很多表,就需要新建实体有点麻烦,通过下面方式就能将返回结果映射成map。

这样就能随意获取返回结果的内容

Query query = this.entityManager.createNativeQuery(sql);    //设置JPA的Query返回Map对象  query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).setParameter("createuser", userInfo.getUsercode()).setParameter("type", type);   List<Map<String,String>> res =  query.getResultList();

到此,关于“基于spring data jpa@query返回map的踩坑分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯