sql >> Databáze >  >> RDS >> Mysql

JpaSpecificationExecutor JOIN + ORDER BY ve specifikaci

Zkuste něco takového (předpokládal jsem, že mazlíček má mnoho majitelů):

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);
            }
        };
    }

Toto je pouze příklad pro vyhledávání všech domácích mazlíčků, jejichž alespoň jeden vlastník má jméno rovné ownerName

Ale můžete přidat metodu List<Pet> findByOwnersNameOrderByIdDesc(String ownerName); místo toho ve vašem úložišti (jako ekvivalent specifikace).




  1. Linuxové souborové systémy a kontrolní body PostgreSQL

  2. Postgres UUID JDBC nefunguje

  3. Jak zálohovat databáze MySQL pomocí AutoMySQLBackup

  4. Získání automaticky generovaného klíče z vložení řádku na jaře 3 / PostgreSQL 8.4.9