spring数据cassandrarepository不工作

pxq42qpu  于 2021-06-09  发布在  Cassandra
关注(0)|答案(0)|浏览(257)

我有一个springboot项目,我定义了cassandra @Table 以及使用 CassandraRepository 用于操作。我需要在主键中的一个字段中按多个值进行搜索,因此我不能使用任何存储库提供的finder方法。因此,我创造了一个习惯 @Query 方法 IN 条款和 java.util.List 争论。但方法不获取任何数据。我没有得到任何例外,只是没有数据。
下面是示例代码以供解释

@Table("some_table)
Class SomeTable{
    @PrimaryKey
    Mykey myKey;

    @Column("someColumn")
    private String someColumn;
}

@PrimaryKeyClass
public class Mykey{
    @PrimaryKeyColumn(name = "col_1", type = PrimaryKeyType.PARTITIONED)
    private String col_1;
    @PrimaryKeyColumn(name = "col_2", type = PrimaryKeyType.CLUSTERED, ordinal = 0)
    private String col2;
    @PrimaryKeyColumn(name = "some_date", type = PrimaryKeyType.CLUSTERED, ordinal = 1)
    private LocalDate somedATE;
}

@Repository
public interface SomeTableRepo extends CassandraRepository<SomeTable, MyKey> {

  @Query("Select * from some_table where col_1 in (?0) and col_2 = ?1 and some_date >= ?2 and some_date <= ?3")
    List<SomeTable> findAllBySomething(List<String> col1, String col2 , LocalDate startDate, LocalDate endDate);

}
如果我在cassandra workbench上编写查询,它会提供数据

SELECT *
  FROM myKeyspc.some_table
  WHERE col_1 in ('abcd','etcetc' ) and col2 = 'some' and some_date < '2020-11-01' and some_date > '2020-01-01'

为了确认,如果有任何其他错误,我硬编码了我的 @QuerySomeTableRepo 然后我得到数据。例如,下面的作品。

@Repository
public interface SomeTableRepo extends CassandraRepository<SomeTable, MyKey> {

  @Query("Select * from some_table where col_1 in ('abcd','etcetc') and col_2 = ?1 and some_date >= ?2 and some_date <= ?3")
    List<SomeTable> findAllBySomething(List<String> col1, String col2 , LocalDate startDate, LocalDate endDate);

所以它对in的支持显然不起作用。我做错什么了吗?在卡桑德雷波是不可能的,那么什么是更好的方法呢。我不想给findbyid打多次电话?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题