sql >> Databasteknik >  >> RDS >> Mysql

JpaSpecificationExecutor JOIN + BESTÄLL AV i specifikation

Prova något sånt här (jag antog att husdjuret har många ägare):

public static Specification<Pet> ownerNameEqual(String ownerName) {
        return new Specification<Pet>() {
            @Override
            public Predicate toPredicate(Root<Pet> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                Join<Pet, Owner> owners = root.join("owners");
                criteriaQuery.orderBy(criteriaBuilder.desc(root.get("id")));
                return criteriaBuilder.equal(owners.get("name"), ownerName);
            }
        };
    }

Detta är bara ett exempel för att söka efter alla husdjur vars minst en ägare har ett namn som är lika med ägarenamn

Men du kan lägga till en metod List<Pet> findByOwnersNameOrderByIdDesc(String ownerName); i ditt arkiv istället (som en motsvarighet till specifikation).




  1. Välj rader från en tabell där rad i en annan tabell med samma id har ett speciellt värde i en annan kolumn

  2. Finns det något sätt att inaktivera uppdateringar/borttagningar men ändå tillåta triggers att utföra dem?

  3. Använder JShell i Java 9 i NetBeans 9.0, del 4

  4. Lär dig hur du använder CASE-sats i SQL