springboot hibernate jpa createNativeQuery使用原生sql查询并转换为pojo的model对象,方便好用

  • 先把entityManager.createNativeQuery生成的jpa接口的Query 强转为hibernateQuery 的query
  • 然后就可以调用hibernate的方法,设置属性,返回的list结果就是Map<String,Object>的有列名称columnName的对象
  • 然后用jackson的ObjectMapper().convertValue把map转换为pojo对象
  • 基本和jdbctemplate一样了
        //normal use, javax.persistence.Query interface
        Query dbQuery = entityManager.createNativeQuery(sql);
        //cast to hibernate query
        org.hibernate.Query hibernateQuery =((org.hibernate.jpa.HibernateQuery)dbQuery)
                .getHibernateQuery();
        hibernateQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);

        List<Map<String,Object>> res = hibernateQuery.list();

        List<TxTestModel> txTestModels = new ArrayList<>();
        res.forEach(e->{
            TxTestModel txTestModel = new ObjectMapper().convertValue(e, TxTestModel.class);
//            txTestModels.add(new TxTestModel().setIdd((Integer) e.get("idd")).setMmm((String) e.get("mmm")).setDdd((Date) e.get("ddd")));
            txTestModels.add(txTestModel);
        });
        System.out.println(txTestModels.size());

猜你喜欢

转载自blog.csdn.net/c5113620/article/details/93513540