使用UNION将SQL语句转换为CRITERIA

时间:2013-04-30 13:30:37

标签: java sql hibernate union criteria

我有SQL代码,我想在标准(Hibernate)中做,但我遇到了麻烦。我的目标是在Criteria中执行此SQL代码:

SELECT * FROM 
             (
              SELECT 'B', D.* 
              FROM table_view1 D 

              UNION 

              SELECT 'S', D.* 
              FROM table_view1 D
              ) 
WHERE dbkey = 1;

我该如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您有两种选择:

  • 使用本机SQL查询
  • 重写您的查询,因此它不使用union,因为Criteria API不支持UNION

答案 1 :(得分:0)

您必须使用ALIAS作为子查询,以便在外部查询WHERE子句中访问属于它的列

SELECT * FROM 
             (
              SELECT 'B', D.* 
              FROM table_view1 D 

              UNION 

              SELECT 'S', D.* 
              FROM table_view1 D
              ) Z
WHERE Z.dbkey = 1;