【问题标题】:how to write hql join query如何编写hql连接查询
【发布时间】:2017-01-04 06:07:15
【问题描述】:

我是 HQL 的新手,请告诉我如何在 HQL 中编写此查询。

我的 SQL 方法是

public Integer validateEditDate(int id, String date);

我的 SQL 查询是

SELECT 
count(a.activity_task_id)
FROM activity_task_details AS a
JOIN milestone_activity_details AS b
    ON a.milestone_activity_id =  b.milestone_activity_id
WHERE a.milestone_activity_id = 17
    AND DATE(a.task_end_date) > '20161229';

其中iddate 是动态的

请将此sql查询转换成Hql查询

【问题讨论】:

    标签: mysql hql


    【解决方案1】:

    要在 HQL 中转换 SQL 查询,首先必须定义关于 db 表映射的类。

    你有这两个表:

    activity_task_details milestone_activity_details

    所以你必须有两个类,如下:

    ActivityTaskDetails MilestoneActivityDetails

    因此,您必须将字段映射为属性。假设您已经这样做了,您的查询将变为:

    SELECT 
    count(a.activity_task_id)
    FROM ActivityTaskDetails a, MilestoneActivityDetails b
    WHERE a.milestone_activity_id =  b.milestone_activity_id
    AND a.milestone_activity_id = :paramId
    AND a.task_end_date > :paramDate;
    

    注意,如果可能的话,你的task_end_dateActivityTaskDetails 类中声明为date

    执行查询:

    String hql = "Your HQL query write upper";
    Query q = session.createQuery(hql);
    q.setString("paramId", id);
    q.setDate("paramDate", date);
    q.list();
    

    session是获取会话工厂对象的变量

    【讨论】:

    • 感谢您的回答,但在此之前我得到了,再次非常感谢您..
    • @hardikshah:因为你是 SO 的新手,如果你愿意,可以接受我的回答(如果实现了你的目标)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多