10

画像などのバイナリデータを保存するためにmongodbでSpringデータを使用しています.URLに追加するバージョンフィールドを維持して、ブラウザが画像をキャッシュしないようにしたいと考えています。

以下のドキュメント基本クラスを参照してください。

import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.mongodb.core.index.Indexed;

public abstract class BaseDocument {

    @Id
    @Indexed(unique=true)
    protected long id;
    protected byte[] data;
    protected String mimeType;
    protected String filename;
    protected String extension;
    @Version
    private Long version;

ドキュメントを保存するために、MongoOperations をラップするリポジトリもあります。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class DocumentRepository implements IDocumentRepository {

    @Autowired
    private MongoOperations mongoTemplate;

    @Override
    public <D extends BaseDocument> void saveDocument(D document) {
        mongoTemplate.save(document);
    }

バージョニングを実装しようとして、いろいろ調べてみたところ、Spring mongo の @Version アノテーションがあることがわかりましたが、これは推奨されていません。次に、Spring データの @Version アノテーションを代わりに使用する必要があることを発見しました。そこで、Spring データの @Version アノテーションを使用しました。

私が期待しているのは、ドキュメントを保存するたびにバージョン フィールドがインクリメントされることです。同じドキュメントを何度か上書きしていますが、バージョン フィールドが期待どおりにインクリメントされていません。

何か間違ったことをしていますか、それとも何か追加する必要がありますか?

4

1 に答える 1