zoukankan      html  css  js  c++  java
  • 用原生sql查询返回实体对象的方法

    最近由于需求变更,客户需要在原来的查询基础上加上一个判断条件,但是这个判断条件所在的实体跟原来的查询实体没有直接关联。为了不影响原来的查询结果,改为用原生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的属性对应。

  • 相关阅读:
    语言基础
    进制转换
    ado属性扩展
    ado数据模型和数据访问类,泛型集合
    完整的修改和删除
    完整的删除
    修改
    类库
    接口
    抽象类
  • 原文地址:https://www.cnblogs.com/iiot/p/3878351.html
Copyright © 2011-2022 走看看