我有这个QueryDSL谓词:
public class Predicates {
public static Predicate get() {
QUser qUser = QUser.user;
QUserCompany qUserCompany = QUserCompany.userCompany;
return qUser.id.eq(qUserCompany.userId);
}
}
如您所见,我需要两个表来查询用户(User
和UserCompany
),因此当我声明我的存储库时出现错误:
public interface UserRepository QueryDslPredicateExecutor<User>
{
}
因为查询中未包含内部UserCompany
表(QueryDslPredicateExecutor<User>
)。
List<User> users = userRepository.findAll(Predicates.get());
如何使用两个表构建谓词并将其与QueryDslPredicateExecutor
一起使用?
答案 0 :(得分:1)
解决!我已将User实体中的一对多关系映射到UserCompany,然后:
public class Predicates {
public static Predicate get() {
QUser qUser = QUser.user;
return qUser.userCompanies.any().userId.eq(qUser.id);
}
}