2012-12-18 12 views
7

Bir kullanıcı nesnesinin bir grup kimliğiyle eşleşen bir tanımlamayı, kimlikler listesine karşı oluşturmak istiyorum. isMember (kodda olduğu gibi) kullanmayı düşünüyordum, ancak yöntem listeyi almayacak.JPA ölçütleri API - Spring Data'da bir listeyle eşleşme JPA Spesifikasyonları

public static Specification<User> matchCompanyIdsList(final List<Long> groupIds){ 
    return new Specification<User>() { 
    public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder){ 
     final Path<Group> group = root.<Group> get("group"); 
     return builder.isMember(company.<Long>get("id"), companyIds); 
    } 
    }; 
} 

Eğer kapalıysam, bunu nasıl yaparım?

cevap

17

Grup kimliği olan grup kimliğine sahip tüm kullanıcılarla eşleşen bir özellik oluşturmak ister misiniz?

public static Specification<User> matchCompanyIdsList(final List<Long> groupIds){ 
    return new Specification<User>() { 
     public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder){ 
      final Path<Group> group = root.<Group> get("group"); 
      return group.in(groupIds); 
     } 
    }; 
} 
:

Eğer öyleyse, (SQL IN yan tümcesi kullanacağız) böyle bir şey kullanabilirsiniz