[JAVA] Sortieren nach Spring Data JPA (mit zusammengesetzter Schlüsselsortierung)

Dies ist ein Memo von dem, worüber ich bei der Verwendung von Spring-Boot gestolpert und nachgeforscht habe.

Umgebung

Annahme

Betrachten Sie mit der folgenden Entität

@Entity
public class Entity {
  @Id
  private int Id;

  private String name;

  private int position;

  // Getter,Setter weggelassen
}

List<T> findAll(Sort sort) List <T> findAll (Sort sort) wird definiert, wenn die Schnittstelle erstellt wird, die JpaRepository erbt, und kann wie folgt sortiert werden.

@Service
public class EntityService {

  @Autowired
  EntityRepoistory entityRepository;

  public List<Entity> xxxMethod() {
    return entityRepoistory.findAll(new Sort(ASC, "position"));
  }

}

Zusammengesetzter Schlüssel

Geben Sie an, indem Sie Sortieren kombinieren

//Sortieren Sie nach absteigender Position und aufsteigender ID
Sort sort = new Sort(Direction.DESC, "position").and(new Sort(Direction.ASC, "id"));

Definition der Abfragemethode

Das Sortieren kann einfach durch Definieren einer Methode auf der Schnittstelle erreicht werden, die JpaRepository erbt.

@Repository
public interface EntityRepository implements JpaRepository<Entity, Integer> {

  // select * from entity where name = 'xxx'Entspricht der Reihenfolge nach Position aufsteigend
  List<Entity> findByNameOrderByPosition(String name);

  // select *Entspricht der Reihenfolge der Entitäten nach Position
  //findAllOrderByPosition ist nicht gut
  List<Entity> findAllByOrderByPosition();
}

Wenn der Rückgabewert von findBy List ist, kann er auch mit dieser Benennung als mehrere Ergebnisse erhalten werden. Eine Falle, in der findAllOrderByPosition nicht funktioniert.

Zusammengesetzter Schlüssel

// select * from entity order by position desc,Entspricht id asc
List<Entity> findAllByOrderByPositionDescIdAsc();

Definition durch Annotation

Realisiert durch Schreiben im JPQL-Format in @ Query

@Repository
public interface EntityRepository implements JpaRepository<Entity, Integer> {
  
  @Query(value = "select e from Entity e order by position desc, id asc")
  List<Sample> queryAll();

  //Oder

  @Query(value = "select e from Entity")
  List<Sample> queryAll(Sort sort);
}

Informationen zum Sortieren verwandter Entitäten

Verwenden Sie "@ Orderby"

@Entity
public class Entity {

  @OrderBy(value = "position desc, id asc")
  @OneToMany()
  @JoinColumn(name = "entity_id")
  private List<EntityItem> entityItems;
}

Referenz-URL

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/

Recommended Posts

Sortieren nach Spring Data JPA (mit zusammengesetzter Schlüsselsortierung)
ODER suchen Sie mit der Spring Data Jpa-Spezifikation
Erstellen eines gemeinsamen Repositorys mit Spring Data JPA
Ein Memorandum beim Versuch von Spring Data JPA mit STS
Ich habe versucht, mit Spring Data JPA zu beginnen
[spring] Verwenden wir Spring Data JPA
Ich habe das Spring Boot-Einführungshandbuch [Zugriff auf Daten mit JPA] ausprobiert.
[So installieren Sie Spring Data Jpa]
Spring Data JPA SQL-Protokollausgabe
Das Erstellen einer REST-API mit Spring JPA-Daten mit REST und Lombok ist unglaublich einfach.
Feder mit Kotorin --2 RestController und Datenklasse
Existiert mit der Spezifikation in Spring Data JPA
Implementierungsmethode für Multi-Datenquelle mit Spring Boot (Mybatis und Spring Data JPA)
So löschen Sie Daten mit einem externen Schlüssel
Jackson kann hibernateLazyInitializer in Spring Data nicht JSON serialisieren JPA führt zu einem Fehler
Beispielcode für die DB-Steuerung durch deklarative Transaktion mit Spring Boot + Spring Data JPA
Beispielcode für die Suche mit QBE (Query by Example) von 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
Erstellen Sie mit Gradle Spring Boot-Projekte nach Umgebung
Holen Sie sich Daten mit der API, die mit dem Befehl curl erstellt wurde
Spring Boot + Spring Data JPA Informationen zu mehreren Tabellenverknüpfungen
Kompatibilität von Spring JDBC und My Batis mit Spring Data JDBC (vorläufig)
MySQL JSON-Typ Wertesuche mit SpringBoot + Spring JPA
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
Booten nach Umgebung mit Spring Boot of Maven