[JAVA] OU rechercher avec la spécification Spring Data Jpa

Voici comment utiliser Spring Data JPA pour effectuer une recherche OR simple et une recherche OR légèrement plus complexe.

Entity Supposons que l'entité associée à une table DB ressemble à ceci.

@Data
@Entity
@Table(name = "users")
public class Users {
  @Id
  @Column(name = "user_id")
  private int userId;

  @Column(name = "company_id")
  private int companyId;
}

Repository

public interface UsersRepository extends JpaRepository<Users, Integer> {

}

Specification

public class UsersSpecifications {
  public static Specification<Users> userIdContains(
      int userId) {
    return new Specification<Users>() {
      @Override
      public Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query,
          CriteriaBuilder cb) {
        return cb.equal(root.get("userId"), userId);
      }
    };

  public static Specification<Users> companyIdContains(
      int companyId) {
    return new Specification<Users>() {
      @Override
      public Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query,
          CriteriaBuilder cb) {
        return cb.equal(root.get("companyId"), companyId);
      }
    };
  }
  }
}

Recherche OU simple

WHERE user_id = 1 OR user_id = 2;

usersRepository.findAll(Specification
            .where(UsersSpecifications.userIdContains(1))
            .or(UsersSpecifications.userIdContains(2)));

Une recherche OU un peu compliquée

WHERE company_id = 3 AND (user_id = 1 OR user_id = 2);

usersRepository.findAll(Specification
            .where(UsersSpecifications.companyIdContains(1))
            .and(UsersSpecifications.userIdContains(1).or(UsersSpecifications.userIdContains(2))));

Recommended Posts

OU rechercher avec la spécification Spring Data Jpa
Existe en utilisant la spécification dans Spring Data JPA
Trier par Spring Data JPA (avec tri par clé composée)
Création d'un référentiel commun avec Spring Data JPA
Un mémorandum lors de l'essai de Spring Data JPA avec STS
Recherche de valeur de type JSON MySQL avec SpringBoot + Spring JPA
[spring] Utilisons Spring Data JPA
J'ai essayé de démarrer avec Spring Data JPA
J'ai essayé le guide d'introduction de Spring Boot [Accès aux données avec JPA]
[Comment installer Spring Data Jpa]
Sortie du journal Spring Data JPA SQL
Voir le comportement des mises à jour d'entités avec Spring Boot + Spring Data JPA
Créer une API REST avec Spring JPA Data avec REST et Lombok incroyablement facile.
Spring avec Kotorin --2 RestController et Data Class
Méthode d'implémentation pour source multi-données avec Spring boot (Mybatis et Spring Data JPA)
Jusqu'à l'acquisition de données avec Spring Boot + MyBatis + PostgreSQL
Spring Data JPA save select-insert n'est qu'une insertion
Référence mutuelle de l'entité de Spring Data JPA et ses notes
Jackson ne peut pas sérialiser JSON hibernateLazyInitializer dans Spring Data JPA entraîne une erreur
Exemple de code pour la recherche à l'aide de QBE (requête par exemple) de Spring Data JPA
Spring Boot + Spring Data JPA À propos des jointures de table multiples
Compatibilité de Spring JDBC et My Batis avec Spring Data JDBC (provisoire)
Jusqu'à l'utilisation de Spring Data et JPA Part 2
Jusqu'à l'utilisation de Spring Data et JPA Part 1
Créer la variable de clause where dans Spring Data JPA
Ressort avec actionneur Kotorin --5
Aperçu de Spring Data JDBC
Validation personnalisée avec Spring
Printemps avec Kotorin ―― 1. INITIALISATION PRINTEMPS
Télécharger avec Spring Boot
piège dynamodb de données de ressort
Rechercher des ressources AWS S3 avec la fonctionnalité de gestion des ressources de Spring Cloud AWS
Implémenter l'API REST avec Spring Boot et JPA (Application Layer)
Implémenter l'API REST avec Spring Boot et JPA (couche d'infrastructure)
Essayez d'utiliser l'API de recherche de code postal avec Spring Boot
Connectez-vous à la base de données avec spring boot + spring jpa et effectuez l'opération CRUD
Flux jusqu'à la sortie des données de la table à afficher avec Spring Boot
Implémenter l'API REST avec Spring Boot et JPA (Domain Layer Edition)