【问题标题】:Query conversion - Sql to Hql查询转换——Sql转Hql
【发布时间】:2026-02-06 00:45:01
【问题描述】:

我有这个查询,我需要在 hql 中转换它,但我有点困惑,不知道如何在 hql 的 'where' 子句中编写条件。

SELECT
    message 
FROM
    p_message 
WHERE
    message_id=(
        SELECT
            a.scene 
        FROM
            p_config a 
        INNER JOIN
            p_rec_type b 
                ON a.email_id=b.email_id 
                AND rec_type=2 
        WHERE
            a.email_type=1
    )

这个 sql 查询的 hql 等价物是什么?

【问题讨论】:

  • 你可以只使用hibernates原生查询功能
  • 你能告诉我怎么写这个查询的代码吗?
  • 您需要展示相关的实体和映射信息。请记住,Hibernate HQL 处理您的域(对象)模型。

标签: sql hibernate hql


【解决方案1】:

请在 HQL 查询下方找到: 假设 p_message 和 p_config 是域对象名称,其他是映射到列的属性。

  String hqlQuery =" SELECT message  FROM     p_message  pm WHERE pm.message_id in (SELECT a.scene FROM p_config a INNER JOIN  p_rec_type b  ON a.email_id=b.email_id AND rec_type =:rectype          WHERE a.email_type=:emailTYpe)"; 
    query = session.createQuery(hqlQuery);
    query.setParameter("rectype", 2);
    query.setParameter("emailTYpe", 1);

【讨论】: