Вставка данных в аэроспайк с помощью aerospikeTemplate java - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь вставить данные в аэроспайк. Чтобы сделать то же самое с AerospikeClient, я написал:

Key key = new Key("test", "myset", "mykey");
        Bin bin = new Bin("shahjahan", "k");
        aerospikeClient.put(new WritePolicy(), key, bin);

Теперь я хочу сделать то же самое, используя AerospikeTemplate. Но методы вставки в AerospikeTemplate ожидают объект в качестве параметра, а не ключи и корзины.

@Override
    public <T> T insert(T objectToInsert, WritePolicy policy) {
        Assert.notNull(objectToInsert, "Object to insert must not be null!");
        try {
            AerospikeData data = AerospikeData.forWrite(this.namespace);
            converter.write(objectToInsert, data);
            Key key = data.getKey();
            Bin[] bins = data.getBinsAsArray();
            client.put(policy == null ? this.insertPolicy : policy, key, bins);
        }
        catch (AerospikeException o_O) {
            DataAccessException translatedException = exceptionTranslator
                    .translateExceptionIfPossible(o_O);
            throw translatedException == null ? o_O : translatedException;
        }
        return null;
    }

Я хочу знать, как я могу передать ключи и значения для вставки данных.

1 Ответ

0 голосов
/ 03 мая 2018

Ваш объект должен иметь аннотацию @Id, чтобы указать ключ для записи. Все остальные поля будут сохранены в виде бункеров. Вот пример:

public class Product {
   @Id
   private Integer id;
   private String productId;
   private String description;
   private String imageUrl;
   private double price;

   ...
}

Тогда вы просто вызываете save() на объекте:

productRepository.save(product);
...