【问题标题】:Way to limit one search match and no limit on others - HQL限制一个搜索匹配而不限制其他搜索匹配的方法 - HQL
【发布时间】:2013-06-21 12:51:18
【问题描述】:

我有一张桌子,上面有 IorA 之类的标志。可能的值或“I”或“A”。

我有一个休眠查询,例如 ' select c from MyClass where `.

我需要在查询中将匹配 IorA 的记录限制为“I”,并且不限制“A”。 联合在 HQL 中不起作用。有没有其他办法?

【问题讨论】:

  • 为什么 Union 不适合你?
  • 我认为 Hibernate 不允许 Union。
  • 对,它没有。我在谈论本机查询。如果它是一个选项。
  • 因此,使用 Native SQL,我们不会拥有所有与 Hibernate Entity 相关的优化和性能。正确的?需要牺牲吗?

标签: java sql hql limit


【解决方案1】:

使用子查询:

select * from table
where flag = 'a'
union all
select * from (
select * from table
where flag = 'l'
limit 3
) t1

【讨论】:

  • hql 中不允许联合。它不是常规的 SQL。
  • 我知道的唯一方法是原生 sql
【解决方案2】:

我知道的唯一选项是native SQL 联合查询(可以命名)。其他选项(通常可以)是使用两个单独的查询。

【讨论】:

  • 因此,使用 Native SQL,我们不会拥有所有与 Hibernate Entity 相关的优化和性能。对吗?
  • 您在谈论哪些性能改进?写得好的SQL应该没有任何问题。您还可以将结果映射到实体。更多信息there
猜你喜欢
  • 1970-01-01
  • 2015-02-11
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多