Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 是否将此SQL转换为HQL?(使用值而不是列进行左连接)_Sql Server 2008_Nhibernate_Hql_Left Join_Castle - Fatal编程技术网

Sql server 2008 是否将此SQL转换为HQL?(使用值而不是列进行左连接)

Sql server 2008 是否将此SQL转换为HQL?(使用值而不是列进行左连接),sql-server-2008,nhibernate,hql,left-join,castle,Sql Server 2008,Nhibernate,Hql,Left Join,Castle,我试图将此SQL转换为HQL,但我找不到实现左连接的方法 SELECT mdcs_causa.id_causa, usuarios.ds_usuario, usuarios.setor, empresas.ds_empresa, itens_controle.id_item_controle, itens_controle.ds_item, itens_controle.ds_indicador, itens_controle.ds

我试图将此SQL转换为HQL,但我找不到实现左连接的方法

SELECT
    mdcs_causa.id_causa,
    usuarios.ds_usuario,
    usuarios.setor,
    empresas.ds_empresa,
    itens_controle.id_item_controle,
    itens_controle.ds_item,
    itens_controle.ds_indicador,
    itens_controle.ds_cliente,
    itens_controle.desdobramento,
    itens_controle.auxiliar,
    itens_controle.bmk_nome,
    itens_controle.bmk_vlr,
    m.status,
    m.medido,
    m.medicao,
    m.fca,
    m.am_cronico,
    m.ac_cronico,
    m.ap_cronico,
    m.id_medicoes as idmedicao,
    itens_controle.prioridade
FROM
    mdcs
    INNER JOIN mdcs_causa 
        ON mdcs.id_mdc = mdcs_causa.id_mdc
    INNER JOIN itens_controle
        ON mdcs_causa.Id_Item_Controle = itens_controle.id_item_controle
    INNER JOIN usuarios
        ON usuarios.id_usuario = itens_controle.id_usuario
    INNER JOIN empresas 
        ON empresas.id_empresa = usuarios.id_cliente_tabela
    LEFT JOIN medicoes m 
        ON (
            itens_controle.id_item_controle = m.id_item_controle
            and
            m.nm_ano = 2013 
            and 
            m.nm_periodo = 2 
            and 
            mdcs_causa.id_mdc = mdcs.id_mdc
        )
    WHERE
        mdcs.id_mdc = 5077
我想我可以把
nm\u ano
nm\u periodo
条件放在where子句中,带有OR to
m.id\u item\u控件为null
,但这个OR条件似乎不起作用,即使在SQL中也是如此


另一种方法是左连接子查询。这在SQL中起作用,但我认为HQL不支持这一点。

可以通过
关键字来实现:

... 
left join itens_controle.medicoes m with (m.nm_ano = 2013 and m.nm_periodo = 2 and mdcs_causa.id_mdc = mdcs.id_mdc)
where mdcs.id_mdc = 5077
您应该将它们作为参数提供,而不是显式值。

详情如下:

Query getEBills =session.createQuery( session.createQuery( from " EBill ebill EBill
ebill
left join ebill.accountTransaction where
ebill.balance > 500";
Li li f l bi i li () ist listOfRowValues = getDebitTransactions.list();
for (Object[] singleRowValues : listOfRowValues) {
// pull off the EBill // pull off the EBill
EBill ebill = (EBill)singleRowValues[0];

我在HQL方面没有任何经验,我已经为您粘贴了我发现的内容。希望这能对你有所帮助

好像是这样。一旦我解决了我的服务器的一些问题,我就会尝试它。