我正在使用 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,但我想在存储库本身中执行此操作。
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);
}