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

开发者社区> 问答> 正文

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

日拱一卒999 2019-03-15 19:24:19 3459

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

SQL Java 数据库连接
分享到
取消 提交回答
全部回答(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
添加回答
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程