1

我需要使用MongoTemplate. 我使用的是 Spring Data MongoDB,所以我的大部分 CRUD 操作都是通过MongoRepository接口进行的。我已经阅读过,@NoRepositoryBean但我不知道如何在我的情况下使用它。

// UserRepository.java
// imports omitted
@Repository
public interface UserRepository extends MongoRepository<User, String> {

    User findOneByUsername(String username);

    @Query(value = "{ '_id' : ?0 }", fields = "{ 'username' : 1 }")
    User getUserDetails(String userId);

}

// CustomUserRepo.java
// imports omitted
@Component
public class CustomUserRepo {

    @Autowired
    private final UserRepository userRepository;

    public List<Todo> getUserTodos(String userId){
        TypedAggregation<User> aggregation = newAggregation(
                User.class, Aggregation.match(Criteria.where("_id").is(userId)),
                Aggregation.unwind("todos")
        );
        AggregationResults<Todo> groupResults = mongoTemplate.aggregate(aggregation, User.class, Todo.class);
        return groupResults.getMappedResults();
    }

}

怎么做一样的UserRepository豆子?

如果我继承UserRepository我必须实现所有方法。如果我CustomUserRepo抽象它就不能被实例化。


更新:

有用的文章:

但解决方案是使用类名的约定。有什么办法可以通过类设计来实现吗?

4

0 回答 0