经过这样的写法,在jsp文件中就可以直接使用score.rank获得当前成绩的排名了 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第 17 章 Native SQL查询 上一页 下一页
第 17 章 Native SQL查询
你也可以使用你的数据库的Native SQL语言来查询数据。这对你在要使用数据库的某些特性的时候(比如说在查询提示或者Oracle中的 CONNECT关键字),这是非常有用的。这就能够扫清你把原来直接使用SQL/JDBC 的程序迁移到基于 Hibernate应用的道路上的障碍。 Hibernate3允许你使用手写的sql来完成所有的create,update,delete,和load操作(包括存储过程)
17.1. 创建一个基于SQL的Query
SQL查询是通过SQLQuery接口来控制的,它是通过调用Session.createSQLQuery()方法来获得
List cats = sess.createSQLQuery("select {cat.*} from cats cat")
.addEntity("cat", Cat.class);
.setMaxResults(50);
.list();
这个查询指定了:
SQL查询语句,它带一个占位符,可以让Hibernate使用字段的别名.
查询返回的实体,和它的SQL表的别名.
addEntity()方法将SQL表的别名和实体类联系起来,并且确定查询结果集的形态。 addJoin()方法可以被用于载入其他的实体和集合的关联,TODO:examples!
原生的SQL查询可能返回一个简单的标量值或者一个标量和实体的结合体。
Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat")
.addScalar("maxWeight", Hibernate.DOUBLE);
.uniqueResult();
17.2. 别名和属性引用
上面使用的{cat.*}标记是 "所有属性" 的简写.你可以显式地列出需要的字段,但是你必须让Hibernate 为每一个属性注入字段的别名.这些字段的站位符是以字段别名为前导,再加上属性名.在下面的例子里,我们从一个其他的表(cat_log) 中获取Cat对象,而非Cat对象原本在映射元数据中声明的表.注意我们甚至在where子句中也可以使用属性别名. 对于命名查询,{}语法并不是必需的.你可以在第 17.3 节 “命名SQL查询”得到更多的细节. String sql = "select cat.originalId as {cat.id}, " +
dynamic-insert,dynamic-update 提高查询插入速度_电子/电路_工程科技_专业资料...表明 Hibernate 在向数据库发送更新语句时只会包 括属性值发生改变的属性, 其实...
个字段的默认值设为0,当用hibernate插入数据时,没...dynamic-insert="true" dynamic-update="true"> ....和修改数据的时候,语句中只包括要插入或者修改的字段...
Hibernate SQL优化小技巧使用dynamic-insert= true dynamic-update= true_计算机软件及应用_IT/计算机_专业资料。 今日推荐 180份文档 ...
Hibernate操作数据库_计算机软件及应用_IT/计算机_...而是根据数据版本来判断是否让事务修改数据 ②.实现...中加入dynamic-update="true" dynamic-insert="true...
默认地,Hibernate 只 启用一级缓存,通过正确地使用...Hibernate 插入数据时仅插入非空数据,当修改数据时只...dynamic=insert="true/false" dynamic-update="true...
通过设置hibernate映射文件的class处 dynamic-insert="true" dynamic-update="true...下将数据库表中默认值字段清空,但同时也会造成无法对此字段插入或更新非默认值...
默认地,Hibernate 只 启用一级缓存,通过正确地使用...杂项 dynamic-insert,dynamic-update,动态插入和动态...Hibernate 插入数据时仅插入非空数据,当修改数据时只...
将dynamic-insert设为false,再看看效果 dynamic-update效果演示创造一个POJO实例...字段的值相同,然后用session的 update方法将它插入到数据库查看Hibernate控制台上...
数据库时使用) 注:使用Oracle数据库时Hibernate默认...映射到数据库的子查询中 (12).dynamic-update: ...(13).dynamic-insert: 指定用于insert的SQL语句是否...
update,<class>的dynamic-insert,dynamic-update 10....的使用,根据数据库提供的自增类型来生成主键的值,...hibernate会执行sql语句修改数据库,这种执sql语句的...
热门文档