如何编写hql连接查询

how to write hql join query

我是 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 查询

要在 HQL 中转换 SQL 查询,您必须首先定义 class 数据库 table 映射。

你有这两个 table:

activity_task_details milestone_activity_details

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

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 在 class 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是获取会话工厂对象的变量