title: Searching user by its firstname and/or lastname in any order
body: <p>I want to search user in my user entity by firstName, lastname or both in any order. 
  Example: 
  In database I have this user: firstname 'jack' and lastname 'franck'
  and I want to type 'ck', or 'jack franck' or 'franck jack' and return this user.</p>
  
  <p>In JPQL (spring data), I execute this query but I don't have any result... </p>
  
  <pre><code>@Query("select u from User u where " +
      "((CONCAT(u.firstName, ' ', u.lastName) like CONCAT('%', :user, '%') or :user is null) " +
      "or (CONCAT(u.lastName, ' ', u.firstName) like CONCAT('%', :user, '%') or :user is null) " +
      "or (u.firstName like CONCAT('%', :user, '%') or :user is null) " +
      "or (u.lastName like CONCAT('%', :user, '%') or :user is null)) ")
  </code></pre>
  
  <p><strong>EDIT:</strong></p>
  
  <p>Actually, i have a demand entity. In this entity, i have two users, reference etc.</p>
  
  <p>The entire request is : </p>
  
  <pre><code>   @Query("select d from Demande d where " +
      "(d.reference like :reference or :reference is null) " +
      "and (d.dateSouhaitee = :dateSouhaitee or :dateSouhaitee is null) " +
      "and (d.datePricing = :datePricing or :datePricing is null) " +
      "and (CONCAT(d.pricer.firstName, ' ', d.pricer.lastName) like :pricer or :pricer is null) " +
      "and (CONCAT(d.commercial.firstName, ' ', d.commercial.lastName) like :commercial or :commercial is null) " +
      "and (d.etat like :etat or :etat is null) " +
      "and (d.client.raisonSociale like :clientRS or :clientRS is null) "
  )
  </code></pre>
  
  <p>"pricer" and "commercial" are users. </p>
  
  <p>My method call : </p>
  
  <pre><code>List&lt;Demande&gt; demandes = demandeRepository.search("%".concat("ref1").concat("%"), dateSouhaitee, datePricing, "%".concat("pricer1").concat("%"), null, null, "%".concat("du nord").concat("%"));
  </code></pre>
  
  <p>And the generated SQL is : </p>
  
  <pre><code>select
  demande0_.id as id1_3_,
  demande0_.client_id as client_i9_3_,
  demande0_.commentaire_commercial as commenta2_3_,
  demande0_.commentaire_pricer as commenta3_3_,
  demande0_.commercial_id as commerc10_3_,
  demande0_.contrat_id as contrat11_3_,
  demande0_.date_pricing as date_pri4_3_,
  demande0_.date_souhaitee as date_sou5_3_,
  demande0_.etat as etat6_3_,
  demande0_.pricer_id as pricer_12_3_,
  demande0_.reference as referenc7_3_,
  demande0_.sites as sites8_3_
  from
  demande demande0_ cross
  join jhi_user user1_ cross
  join jhi_user user3_ cross
  join client client5_
  where
  demande0_.pricer_id = user1_.id
  and demande0_.commercial_id = user3_.id
  and demande0_.client_id = client5_.id
  and (
  demande0_.reference like ?
  or ? is null
  )
  and (
  demande0_.date_souhaitee = ?
  or ? is null
  )
  and (
  demande0_.date_pricing = ?
  or ? is null
  )
  and (
  (
  user1_.first_name || ' ' || user1_.last_name
  ) like ?
  or ? is null
  )
  and (
  (
  user3_.first_name || ' ' || user3_.last_name
  ) like ?
  or ? is null
  )
  and (
  demande0_.etat like ?
  or ? is null
  )
  and (
  client5_.raison_sociale like ?
  or ? is null
  )
  </code></pre>
  
  <p>Thanks :-)</p>