2017-01-09 5 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)を照会する2つのテーブルを必要とするので、私は次のように私のリポジトリを宣言するとき、私はエラーを取得しますこれは:

public interface UserRepository QueryDslPredicateExecutor<User> 
{ 
} 

内部UserCompanyテーブルは、クエリ(QueryDslPredicateExecutor<User>)に含まれていないため。

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

どのように私は2つのテーブルを使用して述語を構築し、QueryDslPredicateExecutorでそれを使うことができますか?

答えて

1

解決済み! Userエンティティの1対多の関係をUserCompanyにマッピングしてから、次に:

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