我需要找到所有在帐户上有一些钱并且长时间没有登录的用户。 这就是我的工作:
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中的字段用户是实体User(不是String)。 如何在子查询中引用用户?
答案 0 :(得分: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();