【问题标题】:Convert SQL to HQL?将 SQL 转换为 HQL?
【发布时间】:2011-05-26 14:01:11
【问题描述】:

如何将以下 SQL 查询转换为 HQL?

SELECT  count(sa.AID)
     FROM   A  sa 
  , B sal,C  m 
  WHERE sa.AID = sal.AID(+) and   sa.BID = m.BID and sa.AID ='0001' 

【问题讨论】:

    标签: sql hibernate hql


    【解决方案1】:

    您需要在 JAVA 中将每个 table/column 转移到其关联的 Entity/Class 中,然后使用 Hibernate ORM 构建查询,如下所示。

    假设 - 表sa 的实体名称为saEntity,表B 的实体名称为bEntity,表C 的实体名称为cEntity。 - AID 列的类名是AidClassBID 列的类名是BidClass

    然后,Hibernate ORM 查询可以按以下方式编写(我喜欢在多行注释内格式化 HQL 查询,以使其更易于阅读和适应)。

    @Query( "SELECT COUNT(sa.AidClass) "
          + "FROM saEntity sa, "
          + "     bEntity sal "
          + "     cEntity m"
          + "WHERE sa.AidClass = sal.AidClass"
          + "  AND sa.BidClass = m.BidClass "
          + "  AND sa.AidClass ='0001'")
    public List <?> runMyQueryMethod();
    

    【讨论】:

      【解决方案2】:

      试着看看这个问题的答案。

      HQL to SQL converter

      或者这篇文章可能会有所帮助..

      https://forum.hibernate.org/viewtopic.php?t=972441

      如果您展示了一些映射,我可能会对 HQL 有所帮助。你可以使用

      Session.CreateSQLQuery 代替??

      【讨论】:

      • 但是我已经完成了上述我没有得到答案
      • 对我来说这看起来像是简单的交叉连接,但映射会有所帮助:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 2013-07-02
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多