Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以为列表添加Restriction.eq()吗?_Java_Spring_Hibernate_List_Restrictions - Fatal编程技术网

Java 我可以为列表添加Restriction.eq()吗?

Java 我可以为列表添加Restriction.eq()吗?,java,spring,hibernate,list,restrictions,Java,Spring,Hibernate,List,Restrictions,我有一段代码: public String getEventsForCalendar(@RequestParam("userId") Long userId){ Session session = NewHibernateUtil.getSessionFactory().getCurrentSession(); try{ session.beginTransaction(); JSONArray eventsArray = new JSONArray(

我有一段代码:

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;
 }
公共字符串getEventsForCalendar(@RequestParam(“userId”)长userId){
会话会话=NewHibernateUtil.getSessionFactory().getCurrentSession();
试一试{
session.beginTransaction();
JSONArray eventsArray=新的JSONArray((列表)(session.createCriteria(Event.class))
.add(Restrictions.eq(“ownerid”,userId))
.list());
User=(User)session.createCriteria(User.class)
.add(Restrictions.eq(“id”,userId)).uniqueResult();
for(Event-Event:(List)session.createCriteria(Event.class)
.add(Restrictions.ne(“ownerid”,userId))
.list()){
if(event.getinvested().contains(user)){
eventsArray.put(新JSONObject(event));
}
}
}
捕获(例外e){
System.out.println(e.getMessage());
}
返回null;
}
首先,它应该查找用户创建的事件。接下来,在循环中,它应该获取用户被邀请的事件。每个事件都有一个名为invested的列表,我想我必须遍历所有列表并检查用户是否在invested列表中,但我可以这样做吗

List<Event> list = session(...)
    .add(Restrictions.eq("invited", user);
List=会话(…)
.添加(限制.eq(“邀请”,用户);

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

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

编辑: 如果要执行反向操作。如果列不在集合中,则可以执行以下操作:

限制.not(限制.in(“colName”,集合))


请参见

谢谢您的帮助,但我有一个小问题-它检查集合是否相等或元素是否在集合中?我之所以这样问是因为它以集合而不是元素作为参数。他想反过来说,我相信:)您所问的根本不可能。您可以选择为查询设置权限并执行。使用hibernate会话。:)