解决Hibernate原生SQL映射问题

在问答里和论坛中,经常看到有人问,怎样将使用本地SQL查询出来的结果映射为值对象的问题,这里就Hibernate中提供的方法做个结论。前提,这里没有使用属性的延迟加载技术。

假设有个值对像,如下:

Java代码

package test;

public class Person {
   private Long id;
   private String name;
   private Long age;
   private Long phone;
   private String address;

   public Person(Long id, String name, Long age, Long phone, String address) {
     this.id = id;
     this.name = name;
     this.age = age;
     this.phone = phone;
     this.address = address;
   }

   public Long getId() {
     return id;
   }

   public void setId(Long id) {
     this.id = id;
   }

   public String getName() {
     return name;
   }

   public void setName(String name) {
     this.name = name;
   }

   public Long getAge() {
     return age;
   }

   public void setAge(Long age) {
     this.age = age;
   }

   public Long getPhone() {
     return phone;
   }

   public void setPhone(Long phone) {
     this.phone = phone;
   }

   public String getAddress() {
     return address;
   }

   public void setAddress(String address) {
     this.address = address;
   }
}

时间: 2025-01-21 12:54:01

解决Hibernate原生SQL映射问题的相关文章

oracle-在线等,请教一下,hibernate 原生 sql语句 查询lag( , , ),出现语法错误

问题描述 在线等,请教一下,hibernate 原生 sql语句 查询lag( , , ),出现语法错误 String queryString = "select smsid from Sms where smsid = ( select c.p from ( select smsid,lag(smsid,1,0) over (order by smsid) as p from Sms) c where c.smsid= "+ smsid + ")"; SQLQue

hibernate原生sql问题

问题描述 我要查询两张表,里面有个相同的字段Name,我用别名区分它们,但是查出来总是只显示第一个,这是为什么???我的sql是这样的:selectA.Name,C.NamefromProductA,StoreIdB....在数据库执行可以,但在程序里查询出来C.Name的值也是A.Name是不是hibernate原生sql查询语法跟HQL不同呢?知道的请帮忙先谢谢了....

详解Java的Hibernate框架中的缓存与原生SQL语句的使用_java

Hibernate缓存缓存是所有关于应用程序的性能优化和它位于应用程序和数据库之间,以避免数据库访问多次,让性能关键型应用程序有更好的表现. 缓存对Hibernate很重要,它采用了多级缓存方案下文所述: 第一级缓存: 第一级缓存是Session的缓存,是一个强制性的缓存,通过它所有的请求都必须通过. Session对象不断自身的动力的对象,提交到数据库之前. 如果发出多个更新一个对象,Hibernate试图拖延尽可能长的时间做了更新,以减少发出的更新SQL语句的数量.如果您关闭会话,所有被缓存

mysql-Hibernate 原生sql多表查询在Linux服务器上查询不到数据

问题描述 Hibernate 原生sql多表查询在Linux服务器上查询不到数据 String sql = "SELECT Area.* FROM area AS Area,district AS d WHERE Area.districtid=d.districtid AND Area.areaname= '" + areaname + "' AND d.districtname='" + cityname + "'"; @SuppressWa

criteria-请问Hibernate中CriteriaQuery可以使用原生sql作为排序条件么

问题描述 请问Hibernate中CriteriaQuery可以使用原生sql作为排序条件么 请问Hibernate中Criteria Query可以使用原生sql作为排序条件么? 正常情况下是 addOrder(Order.desc("column")); 希望order by nvl(column,'xxxx') desc 类似Hibernate 的条件查询就支持原生sql. 请问排序支持么?我搜索了一下,没有找到类似的api. 当然我使用hql就可以了,但是我前提已经使用了Cri

Hibernate配置文件中映射元素详解

详解 本文中将讲述Hibernate的基本配置及配置文件的应用,这对于正确熟练使用Hibernate是相当关键的. 配置文件中映射元素详解 对象关系的映射是用一个XML文档来说明的.映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等.下面从一个映射的例子开始讲解映射元素,映射文件的代码如下. <?xml version="1.0"?><!--所有的XML映射文件都需要定义如下所示的DOCTYPE.Hibernate会先在它的类路径(c

针对hibernate,jdbc,sql的思考

sql    1.对象与数据库的映射,关键在于对象关系的映射,但是没做到很理想,配置过多,控制复杂,另外还会出错.其实本质在于对象不够自由.    2.事务处理.这点上更容易出问题,相对于各种各样的事务管理器,要兼容是一个大问题,总归在各种应用服务器上有很多问题.其本质在于创建了一个自我数据存取小环境,必然面临各种兼容问题.     3.HQL语言.建立对象查询语言,类SQL,但是不同于任何一种SQL,调试环境复杂.本质在于创建了一种语言,增加学习成本.     减化hibernate,将其退化

Hibernate本地SQL查询SQLQuery

使用SQLQuery 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.最简单的情况下,我们可以采用以下形式: Listcats = sess.createSQLQuery("select*fromcats").addEntity(Cat.class).list(); 这个查询指定了:SQL查询字符串和查询返回的实体. 这里,结果集字段名被假设为与映射文件中指明的字段名相同.对于连接了多个表的查询,这就可能

原生sql hibernate-用原生sql查询 为什么实体类中存在该字段,但为什么还是报错列名无效

问题描述 用原生sql查询 为什么实体类中存在该字段,但为什么还是报错列名无效 这是dao层 ds = HibernateDataSource.getHibernateDataSource(); session = ds.getSession(); String sql1="SELECT CHANNEL_ID FROM JC_CHANNEL WHERE PARENT_ID='"+ channelId + "'"; SQLQuery sqlQuery1 = sessi