2013-05-21 23 views
9

Tôi đang sử dụng dữ liệu mùa xuân với mongodb để lưu trữ dữ liệu nhị phân chẳng hạn như hình ảnh vv Tôi muốn duy trì trường phiên bản để thêm vào url để lừa trình duyệt khỏi hình ảnh lưu trong bộ nhớ cache .Chú thích phiên bản dữ liệu mùa xuân không tăng khi được sử dụng trên bộ sưu tập mongo

Xem tài liệu lớp cơ sở của tôi dưới đây:

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; 

Tôi cũng có một gói MongoOperations kho để lưu tài liệu của tôi.

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); 
    } 

Để cố gắng triển khai phiên bản, tôi đã thực hiện một số thao tác xung quanh và thấy rằng có chú thích @Version cho spring mongo nhưng không được dùng nữa. Sau đó tôi phát hiện ra rằng chú thích dữ liệu mùa xuân @Version nên được sử dụng thay thế. Vì vậy, tôi đã đi trước và sử dụng chú thích @Version dữ liệu mùa xuân.

Điều tôi mong đợi xảy ra là trường phiên bản của tôi sẽ được tăng lên mỗi khi tôi lưu tài liệu của mình. Tôi ghi đè lên cùng một tài liệu nhiều lần nhưng trường phiên bản của tôi không tăng dần như tôi mong đợi.

Tôi đang làm điều gì đó không chính xác hoặc có điều gì đó bổ sung mà tôi cần phải làm không?

Trả lời

10

Để sử dụng @version chú thích, bạn cần bật kiểm toán trong mùa xuân dữ liệu MongoDB bằng cách thêm một dòng vào bối cảnh ứng dụng của bạn:

<mongo:auditing /> 
+0

Hi Maciej. Tôi đã thử nhưng tôi đã nhận được lỗi sau từ ide của tôi "Ký tự đại diện phù hợp là nghiêm ngặt, nhưng không có khai báo có thể được tìm thấy cho phần tử mongo: kiểm toán", tôi nâng cấp lên 1.2.1 và tham chiếu 1.2.xsd trong đó phần tử kiểm toán là hiện tại. Điều này đã dừng ide từ việc đưa ra lỗi nhưng tôi vẫn còn recieivng lỗi này tại 'org.xml.sax.SAXParseException; lineNumber: 70; columnNumber: 23; cvc-complex-type.2.4.c: Ký tự đại diện phù hợp là nghiêm ngặt, nhưng không có khai báo nào có thể được tìm thấy cho phần tử 'mongo: auditing'' thời gian biên dịch. Bất kỳ đề xuất nào khác? –

+2

Bạn cần có phiên bản Spring Data MongoDB mới nhất - 1.2.1 trên classpath của bạn. Nếu ngoại lệ vẫn đang đến, hãy xem phần giải thích của tôi về cách sử dụng kiểm toán: http://maciejwalkowiak.pl/blog/2013/05/24/auditing-entities-in-spring-data-mongodb/. Nếu bạn vẫn gặp sự cố khi dán toàn bộ cấu hình XML của mình tại đây –

+0

Cảm ơn tất cả sự giúp đỡ của bạn, Maciej, tôi đã cố gắng làm cho nó hoạt động. Sau khi đọc blog của bạn tôi đang chơi xung quanh với các lĩnh vực kiểm toán khác là tốt. –

Các vấn đề liên quan