2017-03-12 3 views
2

Ich bin mit HQL,HQL Suche in allen Eigenschaften

Ich möchte Kunden finden, die jede Eigenschaft, die ‚mc‘ enthält,

Gibt es eine andere Abfrage kürzer als das?

@Query("select c from Customer c where c.name like %:mc%" 
     + " or c.mail like %:mc%" 
     + " or c.adress like %:mc%" 
     + " or c.tel like %:mc%" 
     + " or c.cin like %:mc%") 

Antwort

0

Ich empfehle Ihnen Spring JPA stattdessen dieses Ergebnis zu erreichen. Ich glaube, es wird sauberer sein.

@Repository 
@Transactional 
public interface CustomerRepository extends JpaRepository<Customer, Long> { 

    List<Customer> findByName(String name); 
    List<Customer> findByMail(String mail); 
    List<Customer> findbyTel(String tel); 
    List<Customer> findByCin(String cin); 
} 

@Service 
public CustomerService { 

    @Autowired 
    private CustomerRepository customerRepo; 

    public List<Customer> searchCustomers(String keyword){ 

     List<Customer> customers = new ArrayList<>(); 

     customers.addAll(customerRepo.findByName(keyword)); 
     customers.addAll(customerRepo.findByMail(keyword)); 
     customers.addAll(customerRepo.findbyTel(keyword)); 
     customers.addAll(customerRepo.findByCin(keyword)); 

     return customers; 
    } 
} 

Wenn eines dieser Felder eindeutig sind, dann sollten Sie die Liste Rückgabetyp einfach Kunden ändern und die entsprechenden Add-Methode aus addAll (Collection) ändern (Object) hinzuzufügen;

+0

danke für die Antwort, aber in meinem Fall arbeite ich mit HQL und möchte eine kürzere Abfrage finden –

Verwandte Themen