0

我想执行以下 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 语法错误

4

1 回答 1

0
  1. 您可以使用 java 代码并使用java.util.Calendar或创建所需的日期(今天日期 - 7 天) JodaTime。然后传入hql:

    and :date7DaysAgo >= u.lastDataFetched

  2. 另一种方式是使用 Native 查询,这样就可以编写纯 SQL。只需添加注释@NamedNativeQuery。然后通过调用它getHibernateTemplate().findByNamedQuery("nameOfYourNamedQuery");

于 2013-07-31T12:38:37.733 回答