【问题标题】:Criteria JPA 2, Hibernate - multiples joins标准 JPA 2,Hibernate - 多重连接
【发布时间】:2014-12-29 12:48:39
【问题描述】:

我一直在尝试进行以下查询,我尝试开始但我不知道从哪里开始。 考虑到每个表都有一个实体,如何使用 Criteria Builder 创建此查询?

SELECT   *
        FROM   TCTIPort as CTIPort        
        INNER JOIN TCTIBoardType AS BoardType                    
        ON CTIPort.BoardType = BoardType.BoardType  

        LEFT JOIN TSysPort AS Port            
        ON CTIPort.Switch = Port.Switch AND        
           CTIPort.Machine = Port.Machine AND        
           CTIPort.Port =  Port.Channel

        LEFT JOIN TSysMachineId AS Mach        
        ON Mach.IdApp = Port.IdApp AND        
           Mach.IdTypeApp = Port.IdTypeApp        

        LEFT JOIN TUnPbxGenericValue AS Gen         
        ON CTIPort.Machine = Gen.Machine AND         
           CTIPort.Port = Gen.Port        

        LEFT JOIN TUnPbxGenericName AS GName         
        ON GName.IdGenericName = Gen.IdGenericName        

        LEFT JOIN TSysTypeOfApp STA        
        ON STA.IdTypeOfApp = Port.IdTypeApp  

        LEFT JOIN TSysApplication AS SysApp 
        ON SysApp.IdApp = Port.IdApp 
        AND SysApp.idTypeOfApp = Port.idTypeApp  

        WHERE        
            LTRIM(RTRIM(BoardClass)) IN ('MSI', 'TAP') AND        
            CTIPort.Switch = @Switch AND        
            CTIPort.Machine = @Machine AND        
            (CTIPort.Port = @Port OR @Port IS NULL) AND        
            (Mach.Machine LIKE @NameMachine OR      
            Gen.GenericValue LIKE @NameMachine OR       
            @NameMachine IS NULL)      
        ORDER BY     
            CTIPort.Port 

我应该为每一列使用接口“JOIN”吗? 如何将条件“AND”添加到联接中?

我搜索了一些示例,但它们只显示了简单的查询(没有“and”且没有更多表,最多 2 个)。

【问题讨论】:

    标签: hibernate jpa jpa-2.0 criteria-api


    【解决方案1】:

    JPA 2.0 不支持“JOIN + ON”。

    您需要执行以下操作:

    select p
    from Person p
    left join p.dogs d
    where d.age = 15 and d.sex = 'MALE'
    

    如果要在连接子句中添加条件,则需要使用 JPA 2.1

    【讨论】:

      猜你喜欢
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 2016-01-19
      • 2016-05-23
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多