spring - 按主键查找所有
问题描述
我有一个卡桑德拉表:
PK | 钥匙 | 价值 |
---|---|---|
pk_1 | key_1 | 值_1 |
pk_1 | key_2 | 价值_2 |
pk_1 | key_3 | 值_3 |
其中pk
和key
形成一个复合键(pk
是分区键,key
是集群)。
我想通过使用 Spring JPA 来检索所有key
-value
对以获得结果。pk
Map<String, String>
我尝试过以下方法:
public interface MyRepository extends CassandraRepository<MyEntity, MyEntityCompoundKey> {
@Query("SELECT key, value FROM my_table WHERE pk='?0'")
Map<String, String> getAll(String pk);
// other crud methods
}
但是,当使用它pk_1
作为参数调用它时,我收到以下错误:
org.springframework.dao.IncorrectResultSizeDataAccessException: Incorrect result size: expected 1, actual 3
我该如何解决?是否有更好的方法来仅通过主键检索元素?
编辑
@Table
public class MyEntity {
@PrimaryKey
pribate MyEntityCompoundKey key;
@CassandraType(type = Name.Text)
private String value;
}
@PrimaryKeyClass
public class MyEntityCompoundKey {
@PrimaryKeyColumn(name = "pk", type= PARTITIONED)
private String pk;
@PrimaryKeyColumn(name = "key", type = CLUSTERED)
private String key;
}
解决方案
您可以在存储库中编写带有签名的方法
public interface MyRepository extends CassandraRepository<MyEntity, MyEntityCompoundKey> {
List<MyEntity> findByKeyPk(String pk)
}
这将由 spring 自动实现并做你想做的事情。
推荐阅读
- parsing - 理解 Text.ParserCombinators.ReadP.sepBy1
- linux - 在这个 unix 命令中需要帮助
- javascript - 滚动到锚点位置,同时考虑到固定标题,当新导航到带有哈希的 url 时
- python - 无法导入声音文件python
- javascript - Typescript Typings:要映射的 T 数组
- java - JavaFX:如何禁用 TextArea 的多行选项
- css - css动画执行顺序
- asp.net-web-api - 令牌认证和 SSL
- apache-spark - 在具有序列化问题的数据帧上调用 UDF
- python - tensorflow cuDNN 兼容性