2

MongoRepository を作成していて、カウント クエリを作成する必要があります。SpringData MongoDB MongoRepository 機能を介してこれを行う最良の方法の例を誰かが提供できますか? 私が見つけることができたすべての例は、リストを返しますが、カウントは返しません。

これが私がやろうとしていることです(明らかに機能しません):

public interface SchoolRepository extends MongoRepository<School, String> {
    @Query("db.school.count({studentStatus: ?0});")
    int getCountOfStudents(int studentStatus);
}

ありがとう。-AP_

4

1 に答える 1

1

似たようなことをしようとしていたときに、この質問を見つけました。残念ながら、org.springframework.data.repository.query.parser.PartTreeに表示される内容を考えると:

private static final Pattern PREFIX_TEMPLATE = Pattern.compile("^(find|read|get)(\\p{Upper}.*?)??By");

サポートされていないようです。

代わりに、新しいインターフェースとそれを実装するクラスを作成することで、リポジトリにカスタム動作を追加できます (リファレンス マニュアルのセクション 1.4.1を参照)。

public interface SchoolRepository extends CrudRepository<School, String>, SchoolRepositoryCustom {
    // find... read... get...
}

public interface SchoolRepositoryCustom {
    int getCountOfStudents(int studentStatus);
}

@Service
public class SchoolRepositoryImpl implements SchoolRepositoryCustom {
    @Autowired
    private SchoolRepository schoolRepository;

    public int getCountOfStudents(int studentStatus) {
        // ...
    }
}

クラスの名前は SchoolRepositoryCustomImpl ではなく、SchoolRepositoryImpl であることに注意してください。

于 2012-05-07T05:49:24.060 に答える