Ceci est un mémo de ce sur quoi j'ai trébuché et étudié en utilisant Spring-Boot.
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"));
  }
}
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"));
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.
// select * from entity order by position desc,Équivalent à id asc
List<Entity> findAllByOrderByPositionDescIdAsc();
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);
}
Utilisez @ Orderby
@Entity
public class Entity {
  @OrderBy(value = "position desc, id asc")
  @OneToMany()
  @JoinColumn(name = "entity_id")
  private List<EntityItem> entityItems;
}
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
Recommended Posts