2014-05-14 131 views
0

我有这样一段代码:我可以为列表添加Restriction.eq()吗?

public String getEventsForCalendar(@RequestParam("userId") Long userId){ 
    Session session = NewHibernateUtil.getSessionFactory().getCurrentSession(); 
    try{ 
     session.beginTransaction(); 
     JSONArray eventsArray = new JSONArray((List<Event>)(session.createCriteria(Event.class) 
       .add(Restrictions.eq("ownerid", userId)) 
       .list())); 
     User user = (User)session.createCriteria(User.class) 
       .add(Restrictions.eq("id", userId)).uniqueResult(); 
     for (Event event: (List<Event>) session.createCriteria(Event.class) 
       .add(Restrictions.ne("ownerid", userId)) 
       .list()){ 
      if (event.getInvited().contains(user)){ 
       eventsArray.put(new JSONObject(event)); 
      } 
     } 
    } 
    catch(Exception e){ 
     System.out.println(e.getMessage()); 
    } 
    return null; 
} 

它,首先要找到用户创建的活动。接下来,在循环中它应该获得邀请用户的事件。每个事件都有名为被邀请的列表,我想我必须遍历所有列表并检查用户是否在邀请列表中,但是我可以执行类似操作吗?

List<Event> list = session(...) 
    .add(Restrictions.eq("invited", user); 

换句话说,我可以从列表中包含对象的数据库对象吗?如果有人回答我的问题,我会很高兴 - 提前谢谢你。

+0

你所问的是根本不可能的。您可以选择正确的查询并执行。使用休眠会话。 :) – dharam

回答

0

您将使用Restrictions.in(“colName”,collection)方法。

编辑: 如果你想做相反的事情。如果列不是集合中,那么你可以这样做:

Restrictions.not(Restrictions.in( “COLNAME”,集合))

http://docs.jboss.org/hibernate/orm/3.3/api/org/hibernate/criterion/Restrictions.html#in(java.lang.String, java.util.Collection)

+0

谢谢你的帮助,但我有一个小问题 - 它检查集合是否相等或者元素是否在集合中?我在问,因为它需要收集,而不是元素作为参数。 –

+0

他想换个角度,我相信:) – dharam

相关问题