hibernate 里面怎么用自定义的 sql 来查询?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

hibernate 里面怎么用自定义的 sql 来查询?

2019-03-15 19:24:19 4394 3

rt,通过自定义 sql 来查询,而且映射到实体

取消 提交回答
全部回答(3)
  • 哈哈哈1988
    2019-07-17 23:30:58

    SQLQuery query = session.createSQLQuery(sql);

    映射到实体的话使用: query.setResultTransformer(Transformers.aliasToBean(YourEntity.class));

    YourEntity.class是你要映射的Bean

    0 0
  • __梦
    2019-07-17 23:30:58

    在使用Session来执行save()、update()、delete()操作的时候会通过映射标记来重载Hibernate默认的语句,因此我们可以使用这些标记来让Hibernate加载我们自定义的SQL语句

    1).实体类映射文件配置
    <hibernate-mapping>
        <class name="com.bc.demo03.pojo.Emp" table="emp" catalog="hibernate_data" lazy="true">
            <id name="empno" type="java.lang.Integer">
                <column name="EMPNO" />
                <generator class="identity"></generator>
            </id>
            <property name="ename" type="java.lang.String">
                <column name="ENAME" length="10" />
            </property>
            <!--因为自定义update语句不涉及此字段,必须设置update="false"-->
            <property name="job" type="java.lang.String" update="false">
                <column name="JOB" length="9" />
            </property>
            <!--因为自定义insert语句不涉及此字段,必须设置insert="false"-->
            <property name="mgr" type="java.lang.Integer" insert="false">
                <column name="MGR" />
            </property>
            <!--其余属性配置同理略-->
    
            <!--自定义SQL语句-->
            <sql-insert>
                <!--insert和update没有涉及的字段要在字段配置上添加insert="false"-->
                insert into Emp (ename,job) values(?,?)
            </sql-insert>
            <sql-update>
                <!--insert和update没有涉及的字段要在字段配置上添加update="false"-->
                update Emp set ename = ?,mgr = ? where empno = ?
            </sql-update>
            <sql-delete>
                <!--没有涉及的字段要在字段配置上添加delete="false"-->
                delete from Emp where empno = ?
            </sql-delete>
        </class>
    </hibernate-mapping>
    
    程序代码
    <!--正常调用save() update() delete()就会调用自定义SQL,这里就不写了-->
    0 0
  • 日拱一卒999
    2019-07-17 23:30:58

    SQLQuery sqlQuery = session.createSQLQuery(sql); 即可

    0 0
添加回答
相关问答

40

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 144697浏览量 回答数 40

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 226085浏览量 回答数 162

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 336968浏览量 回答数 8

13

回答

[@饭娱咖啡][¥20]我想知道 Java 关于引用那一块的知识

心意乱 2018-10-31 18:44:12 142445浏览量 回答数 13

38

回答

[@饭娱咖啡][¥20]对于慢sql有没有什么比较实用的诊断和处理方法?

江小白太白 2018-10-30 18:47:38 142038浏览量 回答数 38

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 295465浏览量 回答数 110

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147212浏览量 回答数 22

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 646716浏览量 回答数 18

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 146021浏览量 回答数 31

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 136874浏览量 回答数 42
0
文章
37
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载