【问题标题】:Can I add Restriction.eq() for list?我可以为列表添加 Restriction.eq() 吗?
【发布时间】:2014-05-14 18:36:45
【问题描述】:

我有这段代码:

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);

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

【问题讨论】:

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

标签: java spring hibernate list restrictions


【解决方案1】:

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

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

Restrictions.not(Restrictions.in("colName", collection))

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

【讨论】:

  • 感谢您的帮助,但我有一个小问题 - 它检查集合是否相等或元素是否在集合中?我问是因为它需要集合,而不是元素作为参数。
  • 他想反过来,我相信 :)
猜你喜欢
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
相关资源
最近更新 更多