【问题标题】:Hibernate one-to-many joins on multiple tables在多个表上休眠一对多连接
【发布时间】:2016-09-20 10:27:24
【问题描述】:

所以,我有一个名为 app 的类。 app 与名为 user 的类具有一对多的关系。 user 与名为 login 的类具有一对多的关系。登录包含表示用户注销时间的字段,以时间戳表示。如果我想进行一个休眠条件查询,返回在过去 x 天内登录的用户,你会怎么做?这是我到目前为止所拥有的,它只会返回所有用户,无论他们何时登录:

Calendar calendar = Calendar.getInstance();
java.util.Date now = calendar.getTime();
java.sql.Timestamp currentTimestamp = new  java.sql.Timestamp(now.getTime());
Calendar calendar2 = Calendar.getInstance();
calendar2.roll(Calendar.DAY_OF_MONTH, days*(-1));
java.util.Date past = calendar2.getTime();
java.sql.Timestamp pastTimestamp = new java.sql.Timestamp(past.getTime());    
Criteria LoginCriteria = session.createCriteria(Application.class, "App")
                    .add(Restrictions.eq("App.appID", appid))
                    .createAlias("App.users", "user")
                        .createAlias("user.logins", "lg")
                        .add(Restrictions.ge("lg.endTime", pastTimestamp ))
                        .add(Restrictions.le("lg.endTime", currentTimestamp));

我正在使用时间戳来衡量时间。如果需要,我可以提供更多信息。

【问题讨论】:

    标签: java database hibernate calendar criteria


    【解决方案1】:
    Criteria LoginCriteria = session.createCriteria(User.class, "user")
                    .add(Restrictions.eq("user.appId", "https://"+appid+".com"))
                    .createAlias("user.logins", "lg")
                    .add(Restrictions.ge("lg.startTime", pastTimestamp ))
                    .add(Restrictions.le("lg.startTime", currentTimestamp));
    

    【讨论】:

      【解决方案2】:

      或者,我认为这应该可行,尽管我没有设置您的结构来测试它:

      Criteria LoginCriteria = session.createCriteria(User.class, "user")
            .add(Restrictions.eq("user.appId", "https://"+appid+".com"))
            .createCriteria("logins")
                 .add(Restrictions.ge("startTime", pastTimestamp))
                 .add(Restrictions.le("startTime", currentTimestamp));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-22
        • 1970-01-01
        • 2019-05-13
        • 2015-09-27
        • 2013-11-02
        • 2011-03-26
        • 2023-04-01
        • 2012-02-02
        相关资源
        最近更新 更多