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 来查询用户(User
和 UserCompany
),所以当我这样声明我的存储库时出现错误:
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);
}
}
我有这个 QueryDSL 谓词:
public class Predicates {
public static Predicate get() {
QUser qUser = QUser.user;
QUserCompany qUserCompany = QUserCompany.userCompany;
return qUser.id.eq(qUserCompany.userId);
}
}
如您所见,我需要两个 table 来查询用户(User
和 UserCompany
),所以当我这样声明我的存储库时出现错误:
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);
}
}