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