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) {
        // ...
    }
}

请注意,该类名为 SchoolRepositoryImpl,而不是 SchoolRepositoryCustomImpl。

于 2012-05-07T05:49:24.060 回答