当前位置:首页 » 编程语言 » jpasql查询语句

jpasql查询语句

发布时间: 2023-08-06 21:09:19

Ⅰ JPA使用原生sql结果集转换成Map

  知烂      JPA中使用原生sql查询出的结果中每一条记录是object数组,如下所示

        String sql = "select id,group_name from form_temp_type";

        Query query = entityManager.createNativeQuery(sql);

        List<Object[]> list = query.getResultList();//最终的结果集是object数组

        我们在使用的时候需要从数组中逐个取出,比较麻烦。很多情况下我们需要的是对象或者Map.

       String sql = "select id,group_name from form_temp_type";

        Query query = entityManager.createNativeQuery(sql);

        query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);

        List<Map> list = query.getResultList();//这里的结果是Map,我们可以通过字段名称获取到相应的值

public static List findRelatives(Stringsql,Map<String,Object>params,EntityManagerentityManager,Class<?>clazz){

        Sessionsession=entityManager.unwrap(Session.class);

        NativeQueryquery=session.createNativeQuery(sql);

        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(clazz));

    烂穗    for(Stringkey:params.keySet()){

                Objectvalue=params.get(key);

                饥猛卜query.setParameter(key,value);

        }

        entityManager.close();

        returnquery.getResultList();

}

Ⅱ 原生sql查询怎样返回page对象

最近由于需求变更,客户需要在原来的查询基础上加上一个判断条件,但是这个判断条件所在的实体跟原来的查询实体没有直接关联。为了不影响原来的查询结果,改为用原生SQL,使用left join来关联查询。为了不改变对查询结果的处理逻辑,将查询结果封装成原来的对象进行操作。具体操作方法如下:
1.基于JPA规范的程序:
Query query = entityManager.createNativeQuery("select id, name, age from t_user");
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(clazz));
// 其中clazz为封装对象的class
List rows = query.getResultList();
2.基于Session的程序:
sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS").setResultTransformer(Transformers.aliasToBean(clazz));
这两种方法需要注意的是查询的字段的别名需要跟clazz的属性对应。

Ⅲ jpa 中的自定义sql语句 distinct能用吗

首先要解释的是:Distinct是避免 查询里的重复行,不是针对某一列的。
简单举例,数据表这样写:
姓名 年龄 性别
----------------------
张三 男 25
李四 女 25
王五 男 42
那么我这么写:

select distinct * from 表名

毫无效果,因为压根就没重复行,如果把语句减少一个查询字段:

select distinct 年龄 from 表名

那结果就只有两条了

热点内容
如何查笔记本电脑的真正配置 发布:2025-02-06 17:48:07 浏览:79
存储器存在地址 发布:2025-02-06 17:47:28 浏览:537
phpsocket教程 发布:2025-02-06 17:42:13 浏览:421
mysql解压缩版安装 发布:2025-02-06 17:26:33 浏览:179
phpgd图片 发布:2025-02-06 17:24:34 浏览:206
php代码整理 发布:2025-02-06 17:24:31 浏览:477
java可执行文件 发布:2025-02-06 17:18:59 浏览:249
卫士相当于现在什么配置 发布:2025-02-06 17:05:04 浏览:409
项目编译慢 发布:2025-02-06 16:53:48 浏览:382
python处理excel文件 发布:2025-02-06 16:36:09 浏览:443