sql >> データベース >  >> RDS >> Mysql

JpaSpecificationExecutor JOIN + ORDER BY in Specification

    次のようなものを試してください(ペットには多くの飼い主がいると思います):

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

    これは、少なくとも1人の飼い主の名前が ownerNameに等しいすべてのペットを検索するための単なる例です。

    ただし、メソッドList<Pet> findByOwnersNameOrderByIdDesc(String ownerName);を追加することはできます。 代わりにリポジトリに(仕様と同等として)




    1. データベースからランダムオーディオを継続的にストリーミング

    2. 2つのテーブルを3番目のテーブルのFKと結合する必要があります

    3. どのバージョン管理パターンをお勧めしますか

    4. SQL-複数の類似クエリを組み合わせる