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