2017-10-18 6 views
1

アカウントにお金を持ち、長期間ログインしていないすべてのユーザーを見つける必要があります。Ebeanサブクエリをメインクエリにリンクする方法

Query<UserSessionRecord> subQuery = 
         Ebean.createQuery(UserSessionRecord.class) 
           .where().gt("loginDateTime", DateTime.now().minusMonths(1)) 
           .eq("user", "user") // <-- here I need to refer somehow to the main query 
           .query(); 
//my main query 
List<User> users = User.FIND.where().eq("account.balance", 0) 
         .notExists(subQuery) 
         .orderBy("id").findList(); 

UserSessionRecordのフィールドユーザーがエンティティユーザ(ない文字列)であるため、このコードは動作しません:私は何をすべきかだ 。 サブクエリでユーザーを参照するにはどうすればよいですか?

答えて

0

ユーザーテーブルにSQLエイリアスを付けることができます。その後、raw()メソッドを使用して、等価性をチェックすることができます。

Query<UserSessionRecord> subQuery = 
        Ebean.createQuery(UserSessionRecord.class) 
          .where().gt("loginDateTime", DateTime.now().minusMonths(1)) 
          .raw(mainuser.id=user.id) 
          .query(); 

List<User> users = User.FIND.query().alias("mainuser").where().eq("account.balance", 0) 
        .notExists(subQuery) 
        .orderBy("id").findList(); 
関連する問題