【问题标题】:Transform a SQL statement to CRITERIA with UNION使用 UNION 将 SQL 语句转换为 CRITERIA
【发布时间】:2013-04-30 13:30:37
【问题描述】:

我有想要在条件(休眠)中执行的 SQL 代码,但我遇到了问题。我的目标是在 Criteria 中执行此 SQL 代码:

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

              UNION 

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

我怎样才能做到这一点?

【问题讨论】:

标签: java sql hibernate union criteria


【解决方案1】:

你有两个选择:

  • 使用原生 SQL 查询
  • 重写您的查询,使其不使用联合,因为 Criteria API 不支持UNION

【讨论】:

  • 好吧,我明白了.. 但是在我的项目中我不能使用原生 SQL 查询 .. 我们必须使用 Criteria.. 所以我不知道我能做什么 .. 如果你是我的查询的另一个解决方案
  • 只是好奇,为什么不能使用原生sql?
  • 因为我在一个不能使用 HQL、SQL Native 等的项目中工作。它只是这个项目的标准(不要使用 HQL,SQL 只使用 CRITERIA)
【解决方案2】:

您必须在子查询中使用 ALIAS 才能在外部查询 WHERE 子句中访问属于它的列

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

              UNION 

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

【讨论】:

  • 拜托你能帮我写下 CRITERIA 中的代码吗.. 4 天以来我尝试这样做但我做不到
猜你喜欢
  • 2014-10-08
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 2013-02-15
  • 2019-07-03
  • 1970-01-01
相关资源
最近更新 更多