如何编写hql join查询

时间:2017-01-04 06:07:16

标签: mysql hql

我是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是动态的

请在Hql查询中转换此SQL查询

1 个答案:

答案 0 :(得分:0)

要在HQL中转换SQL查询,首先必须定义有关db table mapping的类。

你有这两个表:

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_date中的ActivityTaskDetails声明为date

执行查询:

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

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