假设我有一张这样的桌子
@Table(value = "myTable")
public class MyRow {
private UUID id; // primary key
private String state;
}
我有一个根据存在条件更新行的查询
@Query("update myTable set state='Opened' where id=?0 if exists")
Boolean open(UUID id);
到目前为止,一切都很好,如果行存在,则查询返回 true,否则返回 false。
现在,我想更改查询以设置当前状态的条件。
@Query("update myTable set state='Opened' where id=?0 if state='Closed'")
Boolean open(UUID id);
尽管如此,它仍在工作,返回值反映了该行是否已更新。但如果它返回错误,我会错过 CQL 查询返回的关于失败条件的事实。(解释在https://docs.datastax.com/en/cql-oss/3.3/cql/cql_reference/cqlUpdate.html#cqlUpdate__conditionally-updating-columns)
例子:
[applied] | state
-----------|-----------
False | Opened
所以,而不是 Boolean 作为返回类型,我想要类似(或等效)的东西
class ConditionalReturn {
Boolean applied;
String state;
}
而是使用
@Query("update myTable set state='Opened' where id=?0 if state='Closed'")
ConditionalReturn open(UUID id);
但这不起作用……您认为可以直接使用 @Query 吗?[不使用 spring cassandra 模板]