Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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
Java 使用execute query在左连接子句中添加=值_Java_Mysql_Hibernate_Grails_Gorm - Fatal编程技术网

Java 使用execute query在左连接子句中添加=值

Java 使用execute query在左连接子句中添加=值,java,mysql,hibernate,grails,gorm,Java,Mysql,Hibernate,Grails,Gorm,使用Grails3.3.8和MySQLDB5.5.x版本。 我已完成以下查询: String query = $/ select new Map( i1.id as id,i1.name as name) from CustomerComposition as c1 inner join c1.instrument as i1 left join i1.analisys as a1,

使用Grails3.3.8和MySQLDB5.5.x版本。 我已完成以下查询:

 String query = $/
            select new Map( i1.id as id,i1.name as name)
            from CustomerComposition as c1
            inner join c1.instrument as i1
            left join i1.analisys as a1,
            Instrument as i2
            left join i2.analisys as a2,
            Instrument as i3
            left join i3.analisys as a3
            where 
            i1.id=i2.id and i1.id=i3.id and
            c1.portfolio.id=:ptfId and a1.phase.id=:p1Id and a2.phase.id=:p2Id and a3.phase.id=:p3Id 
        /$

        List composition = CustomerComposition.executeQuery(query,
                [ptfId: ptfId, p1Id: phase[0], p2Id: phase[1], p3Id: phase[2]])
左连接不起作用。然后我意识到它不起作用,因为我在WHERE中放了一个子句。我使用simple SQL语句进行了双重检查,事实上,一旦将条件从何处移出,它就可以工作了。一个简单的剪断只是为了澄清,之前,它没有工作:

SELECT
instrument1_.id
FROM
    customer_ptf_composition customerpt0_
    INNER JOIN instrument instrument1_ ON customerpt0_.instrument_id = instrument1_.id
    LEFT JOIN analisys analisys4_ ON instrument1_.id = analisys4_.instrument_id

WHERE
customerpt0_.portfolio_id =1216 
    AND analisys4_.phase_id =111
和之后,它的工作原理取决于左/右连接的工作方式:

SELECT
instrument1_.id
FROM
    customer_ptf_composition customerpt0_
    INNER JOIN instrument instrument1_ ON customerpt0_.instrument_id = instrument1_.id
    LEFT JOIN analisys analisys4_ ON instrument1_.id = analisys4_.instrument_id AND analisys4_.phase_id =111 

WHERE
customerpt0_.portfolio_id =1216

现在我的问题是如何在GORM中将and字段=值放在左连接旁边

您可以使用WITH子句来实现这一点:

left join i3.analisys a3 WITH a3.something = :someValue
另见: