2013-07-31 111 views
0

我想執行下面的SQL查詢Hibernate 3的HQL查詢連接2臺

SELECT * FROM users u JOIN `friendship` f ON u.id = f.f_uid WHERE f.u_uid = 118 AND u.lastDataFetched >= DATE_SUB(CURDATE(),INTERVAL 7 DAY)) order by f.mutual_friendship_count 

我怎樣寫HQL查詢這與Hibernate 3.0

我寫這樣的

String[] parameterName={"usersByUUid","inthepastday"}; 
Object[] paramValues = {user,"7"}; 
List<Friendship> friendshipFriend = getHibernateTemplate().findByNamedParam(" from Users u JOIN Friendship f on u.id = f.f_uid where f.u_uid = :usersByUUid and date_sub(now(),interval :inthepastday day) >=u.lastDataFetched order by f.mutual_friendship_count ", parameterName,paramValues); 

但它顯示hql語法錯誤

回答

0
  1. 您可以使用java代碼並使用java.util.CalendarJodaTime創建所需的日期(今天的日期 - 7天)。然後將它傳遞到HQL:

    and :date7DaysAgo >= u.lastDataFetched

  2. 另一種方法是使用原生查詢,所以你可以寫純SQL。只需添加註釋@NamedNativeQuery。 然後通過電話getHibernateTemplate().findByNamedQuery("nameOfYourNamedQuery");