在case语句

时间:2017-08-22 12:58:56

标签: sql oracle jpa criteria predicate

我有两个表Project和cod。一个项目可以有多个不同类型的鳕鱼,如创意,分配等。现在我想获取所有加入他们的第一个记录的鳕鱼有鳕鱼类型创意的项目,如果项目没有任何创意类型的鳕鱼,那么带上加入项目的结果,在任何不同类型的项目的鳕鱼表中的第一个条目或如果没有鳕鱼然后带有鳕鱼null。我已经创建了sql查询。就像

SELECT 
  p.PROJECT_ID           
  FROM PROJECT p
  LEFT OUTER JOIN cod c1 ON p.PROJECT_ID=c.PROJECT_ID
  WHERE p.DEPARTMENT_ID = 1
  AND (c.cod_id = (CASE WHEN  ((SELECT MIN(c.cod_id)
                                                        FROM cod c 
                                                        WHERE c.name='Creative'
                                                      ) ) IS not NULL 
                                                      THEN 
                                                     (SELECT MIN(c.cod_id)
                                                        FROM cod c 
                                                        WHERE c.name='Creative'
                                                     )
                                              Else
                                                      (SELECT MIN(c.cod_id)
                                                        FROM cod c 
                                                        WHERE c.name!='Creative'
                                                     )
                                            END
                                            ) 
        OR c.cod_id IS NULL     
      ) ;

现在我想通过jpa标准构建器和谓词实现,但这就是抛出

17:55:10,748 ERROR [org.hibernate.hql.internal.ast.ErrorCounter] (http-/0.0.0.0:8080-1) <AST>:0:0: unexpected AST node: query
17:55:10,748 ERROR [org.hibernate.hql.internal.ast.ErrorCounter] (http-/0.0.0.0:8080-1) <AST>:0:0: unexpected AST node: query: <AST>:0:0: unexpected AST node: query

我无法找出原因。

0 个答案:

没有答案