Как обновить поле определяемого пользователем типа (UDT) с помощью Spring Data Cassandra CassandraTemplate - PullRequest
0 голосов
/ 29 мая 2020

У меня есть таблица Cassandra, которая включает определенный пользователем тип. Используя CassandraTemplate из Spring Data Cassandra, я хочу обновить одно поле этого UDT. Это кажется невозможным.

Я пробовал это:

database.update(query(
        where("party_id").is(partyId)).and(where("relationship_id").is(relationshipId)),
        update("address.address_line_1", "this field was updated"),
        Address.class);

Это вызывает:

Query error after 3 ms: UPDATE current_addresses_by_party SET "address.address_line_1"=? WHERE party_id=? AND relationship_id=?;com.datastax.driver.core.exceptions.InvalidQueryException: Undefined column name "address.address_line_1"

Выполнение CQL, указанного в выводе ошибки без кавычек, работает. Я не знаю, есть ли способ заставить Spring выполнить этот оператор, не заключая имя столбца в кавычки.

В припадке оптимизма я также попытался использовать синтаксис для типов карт:

database.update(query(
        where("party_id").is(partyId)).and(where("relationship_id").is(relationshipId)),
        Update.empty().set("address").atKey("address_line_1").to("this field was updated"),
        Address.class)

Это привело к ожидаемой ошибке: поле не является картой.

Есть ли способ делать то, что я хочу, с CassandraTemplate, не прибегая к прямому CQL? Если в CassandraTemplate нет этой функции, было бы здорово, если бы разработчики добавили ее.

Я был удивлен, что не нашел никого, кто хотел бы это сделать. Может я что то совершенно не так делаю? Я новичок в Кассандре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...