You are currently browsing legacy 4.0 version of documentation. Click here to switch to the newest 4.2 version.

We can help you with migration to the latest RavenDB

Contact Us Now
see on GitHub

Compare Exchange: How to Get Compare Exchange Value



GetCompareExchangeValueOperation(Class<T> clazz, String key);

Returned object:

public class CompareExchangeValue<T> {
    private String key;
    private long index;
    private T value;

    public CompareExchangeValue(String key, long index, T value) {
        this.key = key;
        this.index = index;
        this.value = value;

    public String getKey() {
        return key;

    public void setKey(String key) {
        this.key = key;

    public long getIndex() {
        return index;

    public void setIndex(long index) {
        this.index = index;

    public T getValue() {
        return value;

    public void setValue(T value) {
        this.value = value;

Key String The unique object identifier
Value T The existing value that Key has
Index long The version number of the Value that is stored for the specified Key

Example I - Value is 'long'

CompareExchangeValue<Long> readResult
    = store.operations().send(new GetCompareExchangeValueOperation<>(Long.class, "nextClientId"));

Long value = readResult.getValue();

Example II - Value is a custom object

CompareExchangeValue<User> readResult
    = store.operations().send(
        new GetCompareExchangeValueOperation<>(User.class, "AdminUser"));

User admin = readResult.getValue();