当前位置:首页 > 开发 > 编程语言 > Hibernate > 正文

Hibernate通过函数执行sql

发表于: 2014-04-23   作者:coffeehot   来源:转载   浏览次数:
摘要: java调用代码 public BcsResponse getEstateByCustomer(int customerId, Date startDate, Date endDate, int queryType)        {        BCSSession ses

java调用代码

public BcsResponse getEstateByCustomer(int customerId, Date startDate, Date endDate, int queryType)   
    {
        BCSSession session = null;
        BcsResponse retVal = new BcsResponse();
       
        String query_name = "getEndpointVirtualrooms_v2";
        if(queryType==1)
            query_name="getEndpoints_v2";
        if(queryType==2)
            query_name="getVirtualrooms_v2";
       
        try
        {
            session = ProvisionCoreLogic.getInstance().getPersistenceManager().getNewSession();
            log.info("ProvisionCoreLogic.getInstance().getPersistenceManager().getNewSession(): "+session);
            BCSQuery query = session.getNamedQuery(query_name);
            query.setParameter(0,customerId); //Integer.parseInt(String.valueOf(customerId)));
            query.setParameter(1, startDate);
            query.setParameter(2, endDate);
            List resultList = query.getListResult();
            retVal.setSuccessful(true);
            retVal.setReturnedObject(resultList);
        }catch(Exception e){
            retVal.setSuccessful(false);
            retVal.setErrorStr("getEstateByCustomer Failed");
            retVal.setOriginalRequest(null);
            retVal.setReturnedException(null);
            retVal.setReturnedObject(null);
            return retVal;
        }
        return retVal;}

 

Hibernate配置文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Apr 6, 2009 10:03:38 PM by Hibernate Tools 3.2.2.GA -->
<hibernate-mapping>
    <sql-query name="getEndpoints" >
        <return alias="BcsE164MapNew" class="com.bcsglobal.provision.entities.BcsE164MapNew"/>
        <![CDATA[
        select * from (
            select rank() over (partition by bcs_e164_map_id order by history_change_number desc) as id_rank,
            bcs_e164_map_id,history_guid,name,datatype ,is_primary_tp
            from bcs_e164_history_map where
            deleted is null and name is not null and (datatype='ep')
            and customer_id in (select * from customer_tree(?,0)) and secterr='-1342177274'
            and history_action_time < ?
            ) x
        where
            x.id_rank=1 and (x.is_primary_tp is null or x.is_primary_tp ='Yes')
            order by datatype, name
        ]]>
    </sql-query>
    <sql-query name="getVirtualrooms" >
        <return alias="BcsE164MapNew" class="com.bcsglobal.provision.entities.BcsE164MapNew"/>
        <![CDATA[
        select * from (
            select rank() over (partition by bcs_e164_map_id order by history_change_number desc) as id_rank,
            bcs_e164_map_id,history_guid,name,datatype ,is_primary_tp
            from bcs_e164_history_map where
            deleted is null and name is not null and (datatype='vr')
            and customer_id in (select * from customer_tree(?,0)) and secterr='-1342177274'
            and history_action_time < ?
            ) x
        where
            x.id_rank=1 and (x.is_primary_tp is null or x.is_primary_tp ='Yes')
            order by datatype, name
        ]]>
    </sql-query>
    <sql-query name="getEndpointVirtualrooms" >
        <return alias="BcsE164MapNew" class="com.bcsglobal.provision.entities.BcsE164MapNew"/>
        <![CDATA[
        select * from (
            select rank() over (partition by bcs_e164_map_id order by history_change_number desc) as id_rank,
            bcs_e164_map_id,history_guid,name,datatype ,is_primary_tp
            from bcs_e164_history_map where
            deleted is null and name is not null and (datatype='ep' or datatype='vr')
            and customer_id in (select * from customer_tree(?,0)) and secterr='-1342177274'
            and history_action_time < ?
            ) x
        where
            x.id_rank=1 and (x.is_primary_tp is null or x.is_primary_tp ='Yes')
            order by datatype, name
        ]]>
    </sql-query>
   
   <sql-query name="getEndpoints_v2" >
        <return alias="BcsE164MapNew" class="com.bcsglobal.provision.entities.BcsE164MapNew"/>
        <![CDATA[
    DECLARE @customerId int;       
    DECLARE @start_time datetime;
    DECLARE @end_time datetime;
    SET @customerId = ?;
    SET @start_time = DATEADD(day, -1, ?);
    SET @end_time   = DATEADD(day,  2, ?);
    WITH
    STEP1 AS
    (
        SELECT
            rank() over (partition by bcs_e164_map_id order by history_change_number desc) as id_rank, 
            bcs_e164_map_id,
            history_guid,
            name,
            datatype ,
            is_primary_tp,
            [status],
            history_action_time,
            history_change_number 
        FROM   
            BCS.dbo.bcs_e164_history_map
        WHERE
            deleted is null and name is not null and (datatype='ep' )
            and customer_id in (SELECT * FROM BCS.dbo.customer_tree(@customerId,0)) and secterr='-1342177274' and status like 'Active%'
            and @start_time <= history_action_time and  history_action_time <= @end_time       
UNION   
        SELECT   
            10000 + rank() over (partition by bcs_e164_map_id order by history_change_number desc) as id_rank,   
            bcs_e164_map_id,
            history_guid,
            name,
            datatype ,
            is_primary_tp,
            [status],
            history_action_time,
            history_change_number
        FROM   
            BCS.dbo.bcs_e164_history_map
        WHERE   
            deleted is null and name is not null and (datatype='ep')
            and customer_id in (SELECT * FROM BCS.dbo.customer_tree(@customerId,0)) and secterr='-1342177274'
            and history_action_time < @start_time
    ),
    STEP_2 AS
    (
        SELECT
            (rank() over (partition by STEP1.bcs_e164_map_id order by STEP1.id_rank))    as id_rank2,
            STEP1.id_rank                                                                as id_rank,   
            STEP1.bcs_e164_map_id                                                        as bcs_e164_map_id,
            STEP1.history_guid                                                            as history_guid,
            STEP1.name                                                                    as name,
            STEP1.datatype                                                                as datatype,
            STEP1.is_primary_tp                                                            as is_primary_tp,
            STEP1.[status]                                                                as [status],
            STEP1.history_action_time                                                    as history_action_time,
            STEP1.history_change_number                                                    as history_change_number
        FROM   
            STEP1
        WHERE 
            (STEP1.id_rank in (1, 10001))    
            and (STEP1.is_primary_tp is null or STEP1.is_primary_tp ='Yes') 
            and STEP1.[status] like 'Active%'
    )
    SELECT
      STEP_2.id_rank, 
      STEP_2.bcs_e164_map_id,
      STEP_2.history_guid,
      STEP_2.name,
      STEP_2.datatype,
      STEP_2.is_primary_tp
    FROM    STEP_2
    WHERE        STEP_2.id_rank2 = 1 
    ORDER BY    STEP_2.datatype, STEP_2.name;
        ]]>
    </sql-query>
    <sql-query name="getVirtualrooms_v2" >
        <return alias="BcsE164MapNew" class="com.bcsglobal.provision.entities.BcsE164MapNew"/>
        <![CDATA[
            DECLARE @customerId int;       
    DECLARE @start_time datetime;
    DECLARE @end_time datetime;
    SET @customerId = ?;
    SET @start_time = DATEADD(day, -1, ?);
    SET @end_time   = DATEADD(day,  2, ?);
    WITH
    STEP1 AS
    (
        SELECT
            rank() over (partition by bcs_e164_map_id order by history_change_number desc) as id_rank, 
            bcs_e164_map_id,
            history_guid,
            name,
            datatype ,
            is_primary_tp,
            [status],
            history_action_time,
            history_change_number 
        FROM   
            BCS.dbo.bcs_e164_history_map
        WHERE
            deleted is null and name is not null and (datatype='vr')
            and customer_id in (SELECT * FROM BCS.dbo.customer_tree(@customerId,0)) and secterr='-1342177274' and status like 'Active%'
            and @start_time <= history_action_time and  history_action_time <= @end_time       
UNION   
        SELECT   
            10000 + rank() over (partition by bcs_e164_map_id order by history_change_number desc) as id_rank,   
            bcs_e164_map_id,
            history_guid,
            name,
            datatype ,
            is_primary_tp,
            [status],
            history_action_time,
            history_change_number
        FROM   
            BCS.dbo.bcs_e164_history_map
        WHERE   
            deleted is null and name is not null and (datatype='vr')
            and customer_id in (SELECT * FROM BCS.dbo.customer_tree(@customerId,0)) and secterr='-1342177274'
            and history_action_time < @start_time
    ),
    STEP_2 AS
    (
        SELECT
            (rank() over (partition by STEP1.bcs_e164_map_id order by STEP1.id_rank))    as id_rank2,
            STEP1.id_rank                                                                as id_rank,   
            STEP1.bcs_e164_map_id                                                        as bcs_e164_map_id,
            STEP1.history_guid                                                            as history_guid,
            STEP1.name                                                                    as name,
            STEP1.datatype                                                                as datatype,
            STEP1.is_primary_tp                                                            as is_primary_tp,
            STEP1.[status]                                                                as [status],
            STEP1.history_action_time                                                    as history_action_time,
            STEP1.history_change_number                                                    as history_change_number
        FROM   
            STEP1
        WHERE 
            (STEP1.id_rank in (1, 10001))
            and (STEP1.is_primary_tp is null or STEP1.is_primary_tp ='Yes') 
            and STEP1.[status] like 'Active%' 
    )
    SELECT
      STEP_2.id_rank, 
      STEP_2.bcs_e164_map_id,
      STEP_2.history_guid,
      STEP_2.name,
      STEP_2.datatype,
      STEP_2.is_primary_tp
    FROM    STEP_2
    WHERE        STEP_2.id_rank2 = 1 
    ORDER BY    STEP_2.datatype, STEP_2.name;
        ]]>
    </sql-query>
    <sql-query name="getEndpointVirtualrooms_v2" >
        <return alias="BcsE164MapNew" class="com.bcsglobal.provision.entities.BcsE164MapNew"/>
        <![CDATA[
    DECLARE @customerId int;       
    DECLARE @start_time datetime;
    DECLARE @end_time datetime;
    SET @customerId = ?;
    SET @start_time = DATEADD(day, -1, ?);
    SET @end_time   = DATEADD(day,  2, ?);
    WITH
    STEP1 AS
    (
        SELECT
            rank() over (partition by bcs_e164_map_id order by history_change_number desc) as id_rank, 
            bcs_e164_map_id,
            history_guid,
            name,
            datatype ,
            is_primary_tp,
            [status],
            history_action_time,
            history_change_number 
        FROM   
            BCS.dbo.bcs_e164_history_map
        WHERE
            deleted is null and name is not null and (datatype='vr' or datatype='ep' )
            and customer_id in (SELECT * FROM BCS.dbo.customer_tree(@customerId,0)) and secterr='-1342177274' and status like 'Active%'
            and @start_time <= history_action_time and  history_action_time <= @end_time       
UNION   
        SELECT   
            10000 + rank() over (partition by bcs_e164_map_id order by history_change_number desc) as id_rank,   
            bcs_e164_map_id,
            history_guid,
            name,
            datatype ,
            is_primary_tp,
            [status],
            history_action_time,
            history_change_number
        FROM   
            BCS.dbo.bcs_e164_history_map
        WHERE   
            deleted is null and name is not null and (datatype='vr' or datatype='ep')
            and customer_id in (SELECT * FROM BCS.dbo.customer_tree(@customerId,0)) and secterr='-1342177274'
            and history_action_time < @start_time
    ),
    STEP_2 AS
    (
        SELECT
            (rank() over (partition by STEP1.bcs_e164_map_id order by STEP1.id_rank))    as id_rank2,
            STEP1.id_rank                                                                as id_rank,   
            STEP1.bcs_e164_map_id                                                        as bcs_e164_map_id,
            STEP1.history_guid                                                            as history_guid,
            STEP1.name                                                                    as name,
            STEP1.datatype                                                                as datatype,
            STEP1.is_primary_tp                                                            as is_primary_tp,
            STEP1.[status]                                                                as [status],
            STEP1.history_action_time                                                    as history_action_time,
            STEP1.history_change_number                                                    as history_change_number
        FROM   
            STEP1
        WHERE 
            (STEP1.id_rank in (1, 10001))    
            and (STEP1.is_primary_tp is null or STEP1.is_primary_tp='Yes') 
            and STEP1.[status] like 'Active%'
    )
    SELECT
      STEP_2.id_rank, 
      STEP_2.bcs_e164_map_id,
      STEP_2.history_guid,
      STEP_2.name,
      STEP_2.datatype,
      STEP_2.is_primary_tp
    FROM    STEP_2
    WHERE        STEP_2.id_rank2 = 1 
    ORDER BY    STEP_2.datatype, STEP_2.name;
        ]]>
    </sql-query>
</hibernate-mapping>

Hibernate通过函数执行sql

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
今天被人问到,假如我们需要在代码中执行SQL Server 的代理任务,那么有什么思路呢? 我马上想到,
1.sql关键字 查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group b
和同事一块定位一个问题的时候,打印出来的sql是对的,但是执行的不对,由于使用的是namedParameter
和同事一块定位一个问题的时候,打印出来的sql是对的,但是执行的不对,由于使用的是namedParameter
原文: 【MS SQL】通过执行计划来分析SQL性能 如何知道一句SQL语句的执行效率呢,只知道下面3种: 1、
如何知道一句SQL语句的执行效率呢,只知道下面3种: 1、通过SQL语句执行时磁盘的活动量(IO)信息来分
在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? 其实方法很简单,开启mysql的日
做开发的时候,jdbc中通过都是一堆问号,所以查看的时候要看到真正的值很不方便,可以通过 p6spy 这
原文: 通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷 通过MyEclipse操作数据库,执行sql
通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷。效果如下: 步
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号