我是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';
id
和date
是动态的
请在Hql查询中转换此SQL查询
答案 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
是获取会话工厂对象的变量