SQL查询(笔记2——实体查询)
SQL查询(笔记2——实体查询)
二、实体查询
如果查询返回了某个数据表的全部数据列,且该数据表有对应的持久化类映射,我们就把查询结果转换成实体查询。将查询结果转换成实体,可以使用SQLQuery提供的多个重载addEntity()方法。
String sqlString = "select * from enrolment where year=:year";
List l = session.createSQLQuery (sqlString)
//指定查询的记录行转换成Enrolment实体
.addEntity(Enrolment.class)
//为SQL字符串的参数设置值
.setInteger("year",2005)
.list();
注意:使用原生SQL查询时,程序必须选出所有数据列才可转换成持久化实体。假设实体在映射时有一个<many-to-one/>管来指向另一个实体,则SQL查询中必须返回该<many-to-one/>映射的外键列,否则将导致抛出"column not found"异常。最简单的做法是,在SQL字符串中使用(*)来表示返回所有列。
Hibernate支持将查询结果转换成多个实体,如果要将查询结果转换成多个实体,则SQL字符串中应为不同数据表指定不同别名,并调用addEntity(String alias, Class entityClass)方法将不同数据表转换成不同实体。程序片段如下:
String sqlString = "select s.*,e.*,c.* from student s,enrolment e,course c where s.student_id = e.student_id and e.course_code = c.course_code ";
List l = session.createSQLQuery(sqlString)
.addEntity("s",Student.class)
.addEntity("e",Enrolment.class)
.addEntity("c",Course.class)
三、将查询加过转换成非持久化实体
只要该JavaBean为这些数据列提供了对应的getter和setter方法即可。
Query接口提供了一个setResultTransformer()方法,该方法接受一个Transformers对象,通过使用该对象的方法(如aliasToBean()方法)即可把查询到的结果集转换成JavaBean集。
SQL查询(笔记2——实体查询)的更多相关文章
- SQL学习笔记之MySQL查询的三层解析
Mysqld的三层结构: SQL类型: DDL:数据库对象定义语言 对库和表的定义 DML:操作语言 DCL:控制语言 结构化的查询语言:select * from user; 执行该语句时: 1.连 ...
- SQL学习笔记之MySQL查询练习2
(网络搜集) 0x00 数据准备 CREATE TABLE students (sno ) NOT NULL, sname ) NOT NULL, ssex ) NOT NULL, sbirthday ...
- sql hibernate查询转换成实体或对应的VO Transformers
sql查询转换成实体或对应的VO Transformers //addScalar("id") 默认查询出来的id是全部大写的(sql起别名也无效,所以使用.addScalar(& ...
- SQL 基础笔记(二):进阶查询
本笔记整理自<SQL 基础教程>.<MySQL 必知必会>和网上资料.个人笔记不保证正确. 一.复杂查询 视图 将 SELECT 查询包装成一个虚拟表,该虚拟表就被称为视图.( ...
- FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询
有时候,我们希望将写好的 sql 语句,甚至是存储过程进行查询,虽然效率不高(有时候并不是效率至上). 巧用AsTable var sql = fsql.Select<UserX>() . ...
- sql学习笔记(三)—— 联表查询
上篇写了一些sql查询的知识,这篇接着写一下有关联表查询的知识. 既然是联表查询,那肯定得多个表啊,所以,我们先创建一个教师表,表名为 teacher,并且向表中插入数据. 准备工作: 创建表语句: ...
- SQL 必知必会·笔记<12>组合查询
什么是组合查询 SQL 通过执行多个查询(多条SELECT 语句),并将结果作为一个查询结果集返回.这些组合查询通常称为并(union)或复合查询(compound query). 什么时候使用组合查 ...
- SQL学习笔记四(补充-2)之MySQL多表查询
阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 准备表 #建表 create table depart ...
- 1.4(SQL学习笔记)分组、子查询、联结、组合查询
一.分组 建表及数据填充语句下载:链接: https://pan.baidu.com/s/1WHYafwqKJEKq1kDwCH_Zlg 提取码: 3wy4 1.1初识分组 分组是按照某一列,将该列中 ...
随机推荐
- centos系统下安装使用composer教程
Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.Composer 不是一个包管理器.是的,它涉及 "packages" ...
- Js 和 PHP 中保留小数点后X位数的方法 toFixed、round、number_format、sprintf
在 Javacript 中保留小数点后两位数的方法为 toFixed(2),其中的2为保留两位,写多少就保留多少了,满5进1. Javacript例子: var num = 24.54789523; ...
- 生动有趣的动画Toast--第三方开源--NiftyNotification
NiftyNotification在github上的项目主页是:https://github.com/sd6352051/NiftyNotificationNiftyNotification本身又依赖 ...
- sqlserver中distinct的用法(不重复的记录)
下面先来看看例子: table表 字段1 字段2 id name 1 a 2 b 3 c 4 ...
- 批量修改文件名(Python)
和上篇博文经历类似, 批量修改文件名字. : ) 不多说, 看图, 程序运行之前: 程序要做的事情呢, 就是挖出"[]"中的集数, 并用 “第[]集”来修改文件名字. 下面是Pyt ...
- SVN四部曲之SVN简单使用教程入门
1. 签出源代码到本机 在本机创建文件夹StartKit,右键点击Checkout,弹出如下图的窗体: 2. 2 在上图中URL of Repository:下的文本框中输 ...
- 扒一扒各大电商网站的m站都用的什么前端技术输入日志标题
凡客首页使用Swiper和zepto,没有使用jquery , 静态首页+js交互, 资源加载使用 lazyLoad X-AspNet-Version: 4.0.30319 X-AspNetMvc- ...
- mysql中常用的公式及个人演示
学生,院系表 -- phpMyAdmin SQL Dump-- version 4.1.9-- http://www.phpmyadmin.net---- Host: localhost-- Gene ...
- UIDynamic仿物理引擎-浮动碰撞效果-b
最近产品提了个需求(电商的APP-两鲜),需要在APP背景加上几个水果图案在那里无规则缓慢游荡...模仿 天天果园 APP的.好吧,那我就在网上找了很多文章,总结一下写个demo.效果如下: Mou ...
- google chrome 32 升级变更找回user agent(google chrome lose user agent)
chrome32中user agent 找不着了?没关系,看我画的图吧.为什么是英文的,国际化嘛...