我想执行以下sql查询
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
如何使用hibernate 3.0
为此编写hql查询我写得像这样
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 :(得分:0)
您可以使用java.util.Calendar
或JodaTime
使用java代码并创建所需日期(今天日期 - 7天)。然后将其传递给hql:
and :date7DaysAgo >= u.lastDataFetched
另一种方法是使用Native查询,这样就可以编写纯SQL。只需添加注释@NamedNativeQuery
即可。
然后通过getHibernateTemplate().findByNamedQuery("nameOfYourNamedQuery");