2017-01-04 4 views
0

Я новичок в HQL. Кто-нибудь скажет мне, как написать этот запрос в HQL.как написать hql join query

Мой SQL Метод

public Integer validateEditDate(int id, String date); 

Мой SQL Query является

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 динамична

Преобразуйте этот SQL запрос в запрос HQL

ответ

0

Чтобы преобразовать SQL-запрос в HQL, вы должны определить, как и прежде, классы для сопоставления таблицы 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_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 является переменная, чтобы получить объект фабрики сеанса

+0

Спасибо за ваш ответ, но я получил до этого, спасибо, очень сильно ага в .. – Hardik

+0

@hardikshah: Потому что вы новичок SO, если хотите, можете принять мой ответ (если достигнете своей цели) –