问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请帮忙讲解一下HIBERNATE对原生SQL的处理

发布网友 发布时间:2022-10-13 17:52

我来回答

1个回答

热心网友 时间:2023-11-07 13:16

对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。最简单的情况下,我们可以采用以下形式:

List cats = sess.createSQLQuery("select * from cats")
.addEntity(Cat.class)
.list();
这个查询指定了:

SQL查询字符串

查询返回的实体

这里,结果集字段名被假设为与映射文件中指明的字段名相同。对于连接了多个表的查询,这就可能造成问题,因为可能在多个表中出现同样名字的字段。下面的方法就可以避免字段名重复的问题:

List cats = sess.createSQLQuery("select {cat.*} from cats cat")
.addEntity("cat", Cat.class)
.list();
这个查询指定了:

SQL查询语句,它带一个占位符,可以让Hibernate使用字段的别名.

查询返回的实体,和它的SQL表的别名.

addEntity()方法将SQL表的别名和实体类联系起来,并且确定查询结果集的形态。

addJoin()方法可以被用于载入其他的实体和集合的关联.

List cats = sess.createSQLQuery(
"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
)
.addEntity("cat", Cat.class)
.addJoin("kitten", "cat.kittens")
.list();
原生的SQL查询可能返回一个简单的标量值或者一个标量和实体的结合体。

Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat")
.addScalar("maxWeight", Hibernate.DOUBLE);
.uniqueResult();
除此之外,你还可以在你的hbm文件中描述结果集映射信息,在查询中使用。

List cats = sess.createSQLQuery(
"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
)
.setResultSetMapping("catAndKitten")
.list();
请教Hibernate中CriteriaQuery可以使用原生sql作为排序条件么_百度知 ...

Hibernate对原生SQL查询的支持和控制是通过SQLQuery接口实现的,这种方式弥补了HQL、Criterion查询的不足,在操作和使用上往往更加的自由和灵活,如果使用得当,数据库操作的效率还会得到不同程度的提升。 Hibernate对原生 SQL查询的支持和控制是通过SQLQuery接口实现的。通过Session接口,我们能够很方便的创建一个SQLQuery(SQLQu...

[极品难]关于hibernate如何把原生sql查出的结果转化为对象

原生sql可以用query.setResultTransformer(Transformers.aliasToBean(XXX.class));这个类不需要映射字段与表列名对应

hibernate原生sql查询单列返回的是什么

其实是没有具体的返回的,执行的结果是org.hibernate.impl.SQLQueryImpl,根据你对返回结果的逻辑来决定你返回的类型,比如java.util.List,调用它的list()方法,调用iterater方法则返回java.util.Iterator.返回String则调用SQLQueryImpl的父类AbstractQueryImpl的getQueryString()......

hibernter执行sql语句

就算是SSH框架中hibernate的执行语句,也要是完整的正确的sql语句,即使是HQL语句,也是根据类的映射来查找的,也没有这样取别名的规则。主要是不明白as {hh.id} 你是想做什么,as 是用来取别名的 但别名的规则是不能这样的 。你可以把你这个语句的思想说一下 ...

Hibernate3 使用原生sql 返回集能用hbm.xml配置文件映射到类里吗?_百...

l uuid.string:与uuid.hex类似,只是对生成的主键进行编码(长度为16位)。在某些数据库中可能出现问题。l foreign:使用外部表的字段作为主键。该主键一般应用在表与表之间的关系上,会在后面的表对应关系上进一步讲解。l select:Hibernate 3新引入的主键生成机制,主要针对遗留系统的改造工程。由于常用...

hibernate 将结果封装成map

原生SQL查询 以下代码功能:Hibernate执行原生SQL返回List类型结果集 //获得session对象Session session = super.getSession();//创建sql语句String sql = "SELECT users.name,usersinfo.* FROM users,usersinfo WHERE users.id = usersinfo.userid";//获得SQLQuery对象SQLQuery query = session.createSQL...

如何理解hibernate当中的锁机制

当运行后,我们通过show_sql可以看见,原生的sql语句仍然在最后面加上了for update,可以看出hibernate通过数据库的for update自己来实现了悲观锁的机制。Hibernate的加锁模式则分为:LockMode.NONE:无锁 LockMode.WRITE:hibernate在insert和update记录的时候会自动获取 LockMode.READ: hibernate在读取数据的时候会自动获取...

nHibenate 如果只使用原生sql语句后,还能支持多种数据库吗

绝对不可以。自己写sql就相当于重写了hibernate提供的支持多数据库语言的方法。如果是语法相近的数据库还是可以的

hibernate怎么调用mysql中的year,month,concat等函数

如MSSQL 的 T-SQL,这时,就需要使用 hibernate 对 SQL 的原生支持,Session 提供了 createSQLQuery() 这样的方法,此时的 hibernate 就相当于一个简单的 mapper,只提供对象关系映射,当然,一旦你在代码中使用了对 SQL 的原生支持,移植性就不好了。此种方式可以使用你所说的 MySQL 函数 ...

怎么用hibernate获取数据库的当前时间

你的意思是不是说你想取出数据库服务器的当前时间,如果是要取出数据库服务器的当前时间,你可以先使用sql函数取出数据库当前时间赛select getdate() 直接就查询出数据库服务器的当前时间,后面的就不用说了吧。你直接使用hibernate执行原生sql的方式获取这个时间就好了。

如何处理原生家庭对我们的影响 如何处理原生家庭和新生家庭的关系 怎么处理与原生家庭的关系 关于原生家庭与现在家庭的关系处理 请帮忙一下 我不会请帮忙一下 原生牛皮怎么处理 请帮忙解答 原生家庭怎么解决
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
k白金怎么算纯度? 庞大的反义词 庞大反义词 我是一个12岁的小学生,明天就要考400米了,我想知道跑400米的技巧,如前... ...以下哪个故事做到了“悌”?A许武教弟B牛弘不问C礼贤下士D鸠占... ...家长说要给我一个老年机用,我管同学借了一个手机 被发现 怎么解释... 我的月考作文500字 自己在家怎么做零食呢? 坚果零食棒怎样做味道比较香? 零食怎么做好吃 为什么键盘数字键打不出数字? 面试失败后怎么办 面试失败后,如何让自己振作起来? 走在街上总感觉背后的路人在骂自己是为什么啊? 走路路上听到有骂人总感觉是在骂我,我也不知道怎么回事? 因为一些精神打击,我总觉得别人的话是骂自己,别人知道自己心里想什么,这是得了什么病? 我老感觉别人在骂自己 议论自己 总怀疑别人骂我怎么办 为什么老感觉有人在骂我? 总感觉听见身边有人骂自己、咒自己。怎么回事? 大海螺一般煮几分钟 大海螺煮多长时间能熟 大海螺煮多久能熟 大海螺要煮多长时间 大海螺要煮多久 化学,标准状况273K,K代表什么? 标准状况下(273K,101KPA) 标准状况下的273k是什么意思?这是什么单位? 西安咸阳机场上飞机限重吗 别克新君威车开的过程后门还能打开 木马控制你电脑要怎么办? 别克君威门子上locx什么意思 1.6t精英君威儿童锁的位置 别克老君威有没有儿童锁? 饕鶙 睚眦 貔貅 把拼音打出来 29朵玫瑰花是什么意思 29朵玫瑰花的意思 华宜联合CEO刘韬是谁,杨旭文是不是刘韬的人? 王中磊出什么事了 顾恺之在人物画创作中提出的艺术创作理论和方法分别是什么? 杭州昊美科技有限公司是外包吗 哈尔滨昊美生物科技有限公司怎么样? 江西昊美医学科技有限公司怎么样? 金鱼饲料买多大的 金鱼可以喂鹦鹉鱼专用饲料吗??、 公积金贷款买二套房要注意什么,公积金贷款还清后可以再次申请吗 住房公积金提前还贷后可以再买房吗 暗示自己是单身的朋友圈文案摘录四十一条 西游记中女儿国国王饰演者 青岛首套房产首付比例是多少?两个人双方有一方有公积金呢? 我们怎样正确利用电视、网络等媒体为我们学习、生活服务呢? AMPLIFI路由器怎么发烫 笔记本电脑按那个键是大写字母啊? 怪盗基德的生日是多少 怪盗基德的生日是什么时候..?