2017-01-09 105 views
0

我有這個QueryDSL謂:QueryDslPredicateExecutor:謂詞從兩個表

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

解決!我已將User實體中的一對多關係映射到UserCompany,然後:

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