我创建了以@Table
注释的实体,它类似于我的cassandra表。我可以保存,获取所有内容,而不会遇到太多问题。
我的问题是,当我想做一些更令人兴奋的事情时,例如设置一致性级别,或者在不存在插入内容时执行此类操作。基本上,@Table
有一个注释选项,您可以在其中配置读写一致性,但是如果使用Spring并通过配置文件进行设置,该怎么办?我真的很喜欢这些东西的外部配置。另外如果不存在该怎么办保存?
[我知道您可以将saveQuery
或getQuery
设为Statement
,并且可以从中至少设置一致性,但是看起来很难看,然后必须获取结果集,进行映射并获取对象。
有两个问题:
如果不存在,如何保存映射对象?
您将需要使用访问器界面并在此处指定您的自定义查询。如果您只需要审核一小部分将完美工作的字段。
如果需要使用IF NOT EXISTS保存整个对象,可以使用两个步骤来完成:首先使用IF NOT EXISTS更新特定字段以逻辑上说该行正在更新,其次使用来将对象保存到该行mapper.save操作。这完全取决于您的应用逻辑是否适合。
它可以包装到使用mapper.save/load进行简单操作的dat对象中。
我了解这是一个非常老的问题。但是这里的一些答案已经过时,因此,我在这里添加答案。
对于驱动程序版本4.x,可以使用@StatementAttributes批注为每个映射器dao方法设置一致性级别和其他语句属性。
@Dao
public interface ProductDao {
@Select
@StatementAttributes(consistencyLevel = "ONE", pageSize = 500)
Product findById(int productId);
}