【问题标题】:how to integrate two table column in HQL @Query如何在 HQL @Query 中集成两个表列
【发布时间】:2021-04-06 21:22:41
【问题描述】:

我们不能使用 union,因为 HQL 不支持它。 在 HQL 中不使用 union 和 join 组合两个不同表的替代方法是什么?
我们不能使用“或”来组合表格,因为没有类似的表格或列。
我们也可以进行两个不同的查询,然后合并到一个列表中,但这对我们不利,所以如果有任何解决方案可行,请建议

我们希望在 HQL 中实现的 Sql 查询。

select m.* from (select a.* from a1 a where a.id=1 union select b.* from b1 b where b.id =1) m order by m.id desc

有可能吗? 将不胜感激!

【问题讨论】:

    标签: java sql postgresql union hql


    【解决方案1】:

    这些表是否具有相同的数据结构?如果是,您可以使用 INSERT INTO...SELECT 语句,因为它在 HQL 中受支持。

    在 SQL 中它看起来像:

      insert into a select b.* from b where b.id =1
    

    对于 HQL 中的 INSERT INTO...SELECT 语句,请看这里:

    https://mkyong.com/hibernate/hibernate-query-examples-hql/

    【讨论】:

      【解决方案2】:

      我认为最好的办法,写一个这样的DAO方法:

      List<MyObject> result = query1.getResult();
      result.addAll(query2.getResult());
      

      所以如果你想排序或分页,这不是一个好的解决方案,但速度很快。

      如果您想对此查询进行排序或分页,我将创建一个视图。 您可以将此视图映射为实体。

      CREATE VIEW IF NOT EXIST myview as
      SELECT * FROM a
      UNION ALL
      SELECT * FROM b;
      

      并在基于视图的实体上制作 HQL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多