[JAVA] Trier par Spring Data JPA (avec tri par clé composée)

Ceci est un mémo de ce sur quoi j'ai trébuché et étudié en utilisant Spring-Boot.

environnement

supposition

Considérez avec l'entité suivante

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

  private String name;

  private int position;

  // Getter,Setter omis
}

List<T> findAll(Sort sort) List <T> findAll (Sort sort) est défini lorsque l'interface qui hérite de JpaRepository est créée, et peut être triée comme suit.

@Service
public class EntityService {

  @Autowired
  EntityRepoistory entityRepository;

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

}

Clé composite

Spécifier en combinant Trier

//Trier par position décroissante et par identifiant croissant
Sort sort = new Sort(Direction.DESC, "position").and(new Sort(Direction.ASC, "id"));

Définition de la méthode de requête

Le tri peut être réalisé simplement en définissant une méthode sur l'interface qui hérite de JpaRepository.

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

  // select * from entity where name = 'xxx'Équivalent à ordre par position asc
  List<Entity> findByNameOrderByPosition(String name);

  // select *Équivalent à de l'entité ordre par position
  //findAllOrderByPosition n'est pas bon
  List<Entity> findAllByOrderByPosition();
}

Si la valeur de retour de findBy est List, elle peut être obtenue sous forme de résultats multiples même avec cette dénomination, Un piège qui findAllOrderByPosition ne fonctionne pas.

Clé composite

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

Définition par annotation

Réalisé en écrivant au format JPQL dans @ 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();

  //Ou

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

A propos du tri des entités associées

Utilisez @ Orderby

@Entity
public class Entity {

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

URL de référence

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

Recommended Posts

Trier par Spring Data JPA (avec tri par clé composée)
OU rechercher avec la spécification Spring Data Jpa
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
J'ai essayé de démarrer avec Spring Data JPA
[spring] Utilisons 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
Créer une API REST avec Spring JPA Data avec REST et Lombok incroyablement facile.
Spring avec Kotorin --2 RestController et Data Class
Existe en utilisant la spécification dans Spring Data JPA
Méthode d'implémentation pour source multi-données avec Spring boot (Mybatis et Spring Data JPA)
Comment supprimer des données avec une clé externe
Jackson ne peut pas sérialiser JSON hibernateLazyInitializer dans Spring Data JPA entraîne une erreur
Exemple de code pour le contrôle de la base de données par transaction déclarative avec Spring Boot + Spring Data JPA
Exemple de code pour la recherche à l'aide de QBE (requête par exemple) de 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
Créez des projets Spring Boot par environnement avec Gradle
Obtenez des données avec une API créée par la commande curl
Spring Boot + Spring Data JPA À propos des jointures de table multiples
Compatibilité de Spring JDBC et My Batis avec Spring Data JDBC (provisoire)
Recherche de valeur de type JSON MySQL avec SpringBoot + Spring JPA
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
Comment démarrer par environnement avec Spring Boot de Maven