QueryDslPredicateExecutor:来自两个表的谓词

QueryDslPredicateExecutor: Predicate from two tables

我有这个 QueryDSL 谓词:

public class Predicates {
    public static Predicate get() {
        QUser qUser = QUser.user;
        QUserCompany qUserCompany = QUserCompany.userCompany;
        return qUser.id.eq(qUserCompany.userId);
    }
}

如您所见,我需要两个 table 来查询用户(UserUserCompany),所以当我这样声明我的存储库时出现错误:

public interface UserRepository QueryDslPredicateExecutor<User>
{
}

因为内部 UserCompany table 未包含在查询中 (QueryDslPredicateExecutor<User>)。

List<User> users = userRepository.findAll(Predicates.get());

如何使用两个 table 构建谓词并将其与 QueryDslPredicateExecutor 一起使用?

已解决!我已将 User 实体中的一对多关系映射到 UserCompany,然后:

public class Predicates {
    public static Predicate get() {
        QUser qUser = QUser.user;
        return qUser.userCompanies.any().userId.eq(qUser.id);
    }
}