2016-05-23 9 views
0

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.

Antwort

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

Alternativ ich denke, das sollte funktionieren, obwohl ich nicht Ihre Struktur eingerichtet um es zu testen:

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