`
天外鸭
  • 浏览: 24859 次
  • 性别: Icon_minigender_1
  • 来自: 河南商丘
社区版块
存档分类
最新评论

用原生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的属性对应。
0
0
分享到:
评论

相关推荐

    hibernate执行原生sql语句

    在上面的代码中,我们使用 `Session.createSQLQuery()` 方法创建了一个 `SQLQuery` 对象,然后使用 `addEntity()` 方法指定了查询结果的实体类型,最后使用 `list()` 方法执行查询并获取结果。 使用 ...

    hibernate将本地SQL查询结果封装成对象

    如果查询返回的是单个对象,我们可以使用`addEntity()`方法指定结果应映射到的实体类: ```java query.addEntity(MyEntity.class); MyEntity result = (MyEntity) query.uniqueResult(); ``` 如果查询返回的是多个...

    hibernate 执行原生sql的几种方式

    如果返回结果需要映射到实体类,可以使用`addEntity()`方法。 2. **使用`Session.doWork()`** `doWork()`方法允许我们在一个回调函数中直接操作数据库连接,执行原生SQL。这种方式更底层,可以进行更复杂的数据库...

    Hibernate之原生Native SQL查询

    当然,原生SQL查询也有一些需要注意的地方。由于直接操作SQL,所以数据库的兼容性问题需要开发者自己处理。此外,如果查询结果需要映射到多个实体类,或者返回复杂的结果集,那么处理起来可能会比较麻烦,需要手动...

    Hibernate 函数 ,子查询 和原生SQL查询

    在使用原生SQL时,需要注意的是,你需要自己处理结果的映射和事务管理,这可能比使用HQL(Hibernate查询语言)更加复杂。 总结,Hibernate提供了丰富的函数支持,使得我们在处理数据时更加便捷。同时,子查询功能...

    Hibernat使用原生的SQL

    5. **JPA的@NamedNativeQuery**: 如果项目同时使用了JPA,可以通过在实体类上定义@NamedNativeQuery注解来声明原生SQL查询。 在实际开发中,使用原生SQL时需注意以下几点: - **事务管理**: 由于原生SQL不在...

    hibernate将本地SQL查询结果封装成对象(最终).zip

    - 结果集转换:`addEntity()`方法用于指定查询结果应被映射到哪个实体类,`list()`或`scroll()`方法执行查询并返回结果集,这些结果集将自动封装为对应的Java对象。 5. 示例: 假设我们有一个`User`实体类,对应...

    Native SQL查询 (使用SQLQuery).doc

    使用 SQLQuery 可以执行 Native SQL 查询,控制查询的执行是通过 SQLQuery 接口进行的,可以使用 addScalar() 方法指定返回值的类型,也可以使用 addEntity() 方法让原生查询返回实体对象,另外还可以使用 addJoin()...

    Hibernate+本地SQL查询SQLQuery宣贯.pdf

    原生SQL查询也可以返回单一的标量值或标量与实体的组合。例如,计算最大体重: ```java Double maxWeight = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat") .addScalar(...

    springboot+beetl+beetlsql

    BeetlSQL简化了数据库操作,通过简单的配置就能实现对象与数据库表的映射,支持动态SQL,提供了CRUD(创建、读取、更新、删除)等基本操作,以及分页、联表查询等功能。BeetlSQL的动态SQL功能尤其强大,可以在运行时...

    Hibernate+本地SQL查询SQLQuery.pdf

    原生SQL查询可能返回单一标量值或混合标量值与实体的结果。例如,查询猫的最大体重: ```java Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat") .addScalar(...

    C#将Lambda表达式转成Sql语句

    Lambda表达式通常用于LINQ(Language Integrated Query)查询,它允许程序员使用类似SQL的语法在内存中的数据集上进行操作。然而,在某些情况下,我们需要将这些表达式转换为实际的SQL语句,以便在数据库中执行。...

    一个基于原生Java代码查询方式的JPA查询框架.zip

    原生Java查询会使用`EntityManager`的`createQuery`或`createNativeQuery`方法来执行自定义SQL。 4. **事务管理:** JPA支持事务处理,可以使用`EntityManager`进行事务的开始、提交和回滚。 5. **结果转换:** 原生...

    Native-SQL查询 (1).ppt

    当SQL查询的结果包含部分实体属性时,可以使用`addScalar()`方法指定列与对象属性的映射。比如,以下代码展示了如何将SQL查询的结果映射到`Guestbook`对象的特定字段: ```java String sql = "select id, name, ...

    Hibernate连表查询 Hibernate连表查询

    例如,在`findAllbyString`方法中,使用了`getSession().createSQLQuery`方法来执行原生SQL查询: ```java String queryString = "Select * from h_attribute t where ciid=24 and Isinstance=1 and Isdisplay=1"; ...

    hibernate3中通过nativesql或取部分字段并映射为具体对象的实现

    首先,我们需要理解Hibernate中的`SQLQuery`接口,这是执行原生SQL查询的主要入口。通过`Session`对象的`createSQLQuery`方法,我们可以创建一个`SQLQuery`实例,然后设置SQL语句: ```java Session session = ...

    hibernate数据库通用SQL代码

    查询数据的方法有两种实现,一种是基于HQL(Hibernate Query Language),另一种是基于原生SQL。 - 基于HQL的通用查询: HQL是Hibernate提供的面向对象的查询语言,可以方便地操作对象和属性。`select`方法接收一个...

    让JPA的Query查询接口返回Map对象的方法

    让JPA的Query查询接口返回Map对象的方法 JPA(Java Persistence ...让JPA的Query查询接口返回Map对象的方法可以使用unwrap()方法和setResultTransformer()方法来实现。这样可以使得代码更加清晰易懂,且灵活性更强。

    .Net core下直接执行SQL语句并生成DataTable的实现方法

    这些自定义方法通常是以扩展方法的形式附加到DbContext类上,这样就可以通过DbContext的实例来调用ExecuteDataTable方法执行SQL查询,并返回一个MicroDataTable对象。 具体到代码实现,MicroDataTable类中包含了...

    Hibernate查询语言.doc

    Hibernate也允许使用原生SQL查询,通过`createSQLQuery()`方法创建`SQLQuery`对象,然后可以使用`addEntity()`或`setResultTransformer()`将结果转换为对象。 总的来说,Hibernate的查询语言提供了一套灵活且强大...

Global site tag (gtag.js) - Google Analytics