Also habe ich eine Klasse namens app. Die App hat eine Eins-zu-viele-Beziehung mit einer Klasse namens user. Der Benutzer hat eine Eins-zu-viele-Beziehung mit einer Klasse namens login. Login enthält Felder, die die Uhrzeit der Abmeldung des Benutzers darstellen, ausgedrückt als Zeitstempel. Wenn ich eine Hibernate-Kriterien-Abfrage erstellen möchte, die die Benutzer zurückgibt, die sich in den vergangenen x Tagen anmeldet haben, wie würden Sie das tun? Das ist, was ich habe so weit, und es gibt nur alle Benutzer unabhängig davon, wann sie angemeldet:Hibernate-Eins-zu-Viele-Joins auf mehreren Tabellen
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));
Ich bin mit Zeitstempel Zeit zu messen. Ich kann mehr Informationen bei Bedarf zur Verfügung stellen.