QueryDslPredicateExecutor:来自两个表的谓词

时间:2017-01-09 08:20:58

标签: spring-data querydsl

我有这个QueryDSL谓词:

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

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

public interface UserRepository QueryDslPredicateExecutor<User>
{
}

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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