Używam danych sprężynowych z mongodb do przechowywania danych binarnych, takich jak obrazy itp. Chcę zachować pole wersji do dołączenia do adresu URL, aby oszukać przeglądarkę z buforowania obrazów .Adnotacja wersji danych sprężyny nie zwiększa się w przypadku użycia w kolekcji mongo
Zobacz mój dokument klasa bazowa poniżej:
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;
Mam też repozytorium MongoOperations owijarki do zapisywania moich dokumentów.
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);
}
W dążeniu do realizacji wersjonowanie, zrobiłem jakieś polowanie dookoła i stwierdził, że nie było adnotacji @version na wiosnę Mongo ale to była przestarzała. Odkryłem wtedy, że zamiast tego powinienem użyć adnotacji wiosennej do danych @Version. Więc poszedłem do przodu i użyłem adnotacji spring data @Version.
Spodziewam się, że moje pole wersji będzie zwiększane za każdym razem, gdy zapisuję mój dokument. Nadpisuję ten sam dokument kilka razy, ale moje pole wersji nie wzrasta, jak się spodziewam.
Czy robię coś niepoprawnie lub czy jest coś dodatkowego, co muszę zrobić?
Cześć Maciej. Próbowałem, ale otrzymałem następujący błąd z mojego ide "Pasujące symbole wieloznaczne są ścisłe, ale nie można znaleźć deklaracji dla elementu mongo: auditing", zaktualizowałem do wersji 1.2.1 i odwołuję się do pliku 1.2.xsd, w którym element kontrolny jest obecny. To powstrzymało ideę przed podaniem błędu, ale nadal otrzymuję ten błąd w 'org.xml.sax.SAXParseException; lineNumber: 70; columnNumber: 23; cvc-complex-type.2.4.c: Pasujący symbol wieloznaczny jest ścisły, ale nie można znaleźć deklaracji dla elementu "mongo: auditing" w czasie kompilacji. Jakieś dalsze sugestie? –
Musisz mieć najnowszą wersję Spring Data MongoDB - 1.2.1 na swojej ścieżce klas. Jeśli wyjdzie jeszcze wyjątek, zapoznaj się z wyjaśnieniem, jak korzystać z audytu: http://maciejwalkowiak.pl/blog/2013/05/24/auditing-entities-in-spring-data-mongodb/. Jeśli nadal będziesz mieć problemy z wklejeniem całej konfiguracji XML tutaj –
Dzięki za całą pomoc, Maciej, udało mi się ją uruchomić. Po przeczytaniu twojego bloga bawię się również z innymi polami kontroli. –