[JAVA] ODER suchen Sie mit der Spring Data Jpa-Spezifikation

Hier erfahren Sie, wie Sie mit Spring Data JPA eine einfache ODER-Suche und eine etwas komplexere ODER-Suche durchführen.

Entity Angenommen, die einer DB-Tabelle zugeordnete Entität sieht folgendermaßen aus.

@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);
      }
    };
  }
  }
}

Einfache ODER-Suche

WHERE user_id = 1 OR user_id = 2;

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

Eine etwas komplizierte ODER-Suche

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

ODER suchen Sie mit der Spring Data Jpa-Spezifikation
Existiert mit der Spezifikation in Spring Data JPA
Sortieren nach Spring Data JPA (mit zusammengesetzter Schlüsselsortierung)
Erstellen eines gemeinsamen Repositorys mit Spring Data JPA
Ein Memorandum beim Versuch von Spring Data JPA mit STS
MySQL JSON-Typ Wertesuche mit SpringBoot + Spring JPA
[spring] Verwenden wir Spring Data JPA
Ich habe versucht, mit Spring Data JPA zu beginnen
Ich habe das Spring Boot-Einführungshandbuch [Zugriff auf Daten mit JPA] ausprobiert.
[So installieren Sie Spring Data Jpa]
Spring Data JPA SQL-Protokollausgabe
Sehen Sie sich das Verhalten von Entitätsaktualisierungen mit Spring Boot + Spring Data JPA an
Das Erstellen einer REST-API mit Spring JPA-Daten mit REST und Lombok ist unglaublich einfach.
Feder mit Kotorin --2 RestController und Datenklasse
Implementierungsmethode für Multi-Datenquelle mit Spring Boot (Mybatis und Spring Data JPA)
Bis zur Datenerfassung mit Spring Boot + MyBatis + PostgreSQL
Spring Data JPA Save Select-Insert ist nur Insert
Gegenseitige Bezugnahme auf Entity of Spring Data JPA und seine Anmerkungen
Jackson kann hibernateLazyInitializer in Spring Data nicht JSON serialisieren JPA führt zu einem Fehler
Beispielcode für die Suche mit QBE (Query by Example) von Spring Data JPA
Spring Boot + Spring Data JPA Informationen zu mehreren Tabellenverknüpfungen
Kompatibilität von Spring JDBC und My Batis mit Spring Data JDBC (vorläufig)
Bis zur Verwendung von Spring Data und JPA Part 2
Bis zur Verwendung von Spring Data und JPA Part 1
Machen Sie die where-Klauselvariable in Spring Data JPA
Feder mit Kotorin --5 Aktuator
Spring Data JDBC-Vorschau
Selbstgemachte Validierung mit Spring
Frühling mit Kotorin ―― 1. SPRING INITIALIZR
Mit Spring Boot herunterladen
Federdaten Dynamodb-Falle
Suchen Sie mit der Ressourcenhandhabungsfunktion von Spring Cloud AWS nach AWS S3-Ressourcen
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Versuchen Sie, die Springcode-Such-API mit Spring Boot aufzurufen
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
Fluss bis zur Ausgabe von Tabellendaten, die mit Spring Boot angezeigt werden sollen
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).