Итак, у меня есть класс под названием app. приложение имеет отношение «один ко многим» с классом, называемым пользователем. пользователь имеет отношение «один ко многим» с классом «login». Login содержит поля, представляющие время выхода пользователя из системы, выраженное как временные метки. Если бы я хотел сделать запрос критериев спящего режима, который возвращает пользователей, которые подписались за последние х дней, как бы вы это сделали? Это то, что я до сих пор, и он просто возвращает всех пользователей, независимо от того, когда они вошли в систему:Hibernate one-to-many объединяется на несколько таблиц
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));
Я использую временные метки для измерения времени. При необходимости я могу предоставить дополнительную информацию.