如何使用 @Query 在 Spring Boot 存储库中执行 MongoDB 中的字段更新?

问题描述 投票:0回答:1

我正在使用 Spring Data MongoDB 并尝试在我的存储库中创建自定义更新方法。但是,我在尝试使用 @Query 和 @Update 注释时遇到了问题。这是我的存储库和模型:

型号:

@Document
public class VideoStats {

    @Id
    private String id;

    private String status;

    // other fields...
}

存储库:

@Repository
public interface VideoStatsRepository extends MongoRepository<VideoStats, String> {

    @Query("{ id: ?0}")
    @Update("{ '$set': { status: ?1 } }")
    void updateStatus(String id, String status);
}

错误:

Caused by: org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract void com.saravanan.video_creator.repositories.VideoStatsRepository.updateStatus(java.lang.String,java.lang.String); Reason: No property 'updateStatus' found for type 'VideoStats'

如何使用

@Update
定义更新函数,我始终可以使用MongoTemplate,但我想在存储库本身中执行此操作。

java mongodb spring-boot spring-data-mongodb
1个回答
0
投票

mongo db 的 Spring data 没有对 @Query 注释更新的内置支持。

您可以使用示例

MongoDbTemplate
使用
Query
+
Criteria
类来执行更新。:

@Autowired
private MongoTemplate mongoTemplate;


public void updateVideoStatus(String id, String newStatus) {
    Query query = new Query(Criteria.where("id").is(id));
    Update update = new Update();
    update.set("status", newStatus);
    mongoTemplate.updateFirst(query, update, VideoStats.class);
}
© www.soinside.com 2019 - 2024. All rights reserved.