标签: spring-data-cassandra

使用@Query Annotation时出现异常 - "org.springframework.dao.InvalidDataAccessApiUsageException:声明性查询方法是todo"

我是Spring-data-cassandra的新手.我的示例代码如下所示:

Customer.java

@Table
public class Customer {

    @PrimaryKey
    private String id;

    private String firstName;
    private String lastName;
    @CassandraType(type = Name.BIGINT)
    private Long age;

    protected Customer() {}

    public Customer(String id, String firstName, String lastName, Long age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.id = id;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public Long getAge() {
        return age;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    @Override
    public String …
Run Code Online (Sandbox Code Playgroud)

spring-data-cassandra

4
推荐指数
1
解决办法
1601
查看次数

datastax驱动程序vs spring-data-cassandra

嘿,我是Cassandra的新手,我对Spring jdbc-template很友好.

有谁可以解释他们两个之间的差异?你也可以建议哪一个好用吗?

谢谢.

cassandra cassandra-2.0 spring-data-cassandra

4
推荐指数
1
解决办法
2287
查看次数

spring-data-cassandra设置一致性级别

我正在使用spring-data-cassandra(1.3.1.RELEASE)连接到cassandra数据库。有没有办法改变spring-data-cassandra中的一致性级别。默认情况下为1 级(spring-data-cassandra中的默认一致性级别是多少?)。但是如何改变呢?

谢谢!

java spring-data-cassandra

4
推荐指数
2
解决办法
6019
查看次数

保存java.util.UUID时,Cassandra说"InvalidQueryException:TimeUUID类型的版本无效"

我正在尝试保存java.util.UUID到Cassandra类型的列timeuuid.例如,这是一个默认的spring-data-cassandra映射:http://docs.spring.io/spring-data/cassandra/docs/current/reference/html/#mapping-conversion.UUID的值是由java.util.UUID#randomUUID() 我得到一个异常生成的: "com.datastax.driver.core.exceptions.InvalidQueryException: Invalid version for TimeUUID type"

https://svn.apache.org/repos/asf/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java上学习代码揭示了原因:

    @Override
    public void validate(byte[] bytes)
    {
        if (bytes.length != 16 && bytes.length != 0)
            throw new MarshalException(String.format("TimeUUID should be 16 or 0 bytes (%d)", bytes.length));
        // version is bits 4-7 of byte 6.
        if (bytes.length > 0)
            if ((bytes[6] & 0xf0) != 0x10)
                throw new MarshalException("Invalid version for TimeUUID type.");
    }
Run Code Online (Sandbox Code Playgroud)

java uuid cassandra spring-data-cassandra timeuuid

4
推荐指数
1
解决办法
2741
查看次数

Apache Cassandra 的 Spring Data 将 java.time.LocalDateTime 转换为 UTC

我试图java.time.LocalDateTime在我的 Cassandra 数据库中保留一个对象并使其与时区无关。我正在使用 Spring Data Cassandra 来做到这一点。

问题是,沿着这条线的某个地方,有些东西将这些LocalDateTime对象视为在我的服务器的时区中,并在将它们存储在数据库中时将它们偏移到 UTC 时间。

这是错误还是功能?我可以以某种方式解决它吗?

配置:

@Configuration
@EnableCassandraRepositories(
    basePackages = "my.base.package")
public class CassandraConfig extends AbstractCassandraConfiguration{

    @Override
    protected String getKeyspaceName() {
        return "keyspacename";
    }

    @Bean
    public CassandraClusterFactoryBean cluster() {
        CassandraClusterFactoryBean cluster =
            new CassandraClusterFactoryBean();
        cluster.setContactPoints("127.0.0.1");
        cluster.setPort(9142);
        return cluster;
    }

    @Bean
    public CassandraMappingContext cassandraMapping()
        throws ClassNotFoundException {
        return new BasicCassandraMappingContext();
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望保留的预订记录:

@Table("booking")
public class BookingRecord {
    @PrimaryKeyColumn(
        ordinal = 0,
        type = PrimaryKeyType.PARTITIONED
    )
    private UUID bookingId = null; …
Run Code Online (Sandbox Code Playgroud)

java timezone spring cassandra spring-data-cassandra

4
推荐指数
2
解决办法
6246
查看次数

Spring Data Cassandra:如何使用复合键查询表?

我有以下列族:

@Table(value = "request_event")
public class RequestEvent {

    @PrimaryKeyColumn(name = "day_requested", ordinal = 0, type = PrimaryKeyType.PARTITIONED)
    private LocalDate dayRequested;

    @PrimaryKeyColumn(name = "date_requested", ordinal = 1, type = PrimaryKeyType.CLUSTERED, ordering = Ordering.DESCENDING)
    private LocalDateTime dateRequested;

    ...
}
Run Code Online (Sandbox Code Playgroud)

由存储库存储和访问:

@Repository
public interface RequestEventRepository extends CrudRepository<RequestEvent, LocalDateTime> {
}
Run Code Online (Sandbox Code Playgroud)

不幸的requestEventRepository.findOne(localDate)是抛出异常,可能是因为它返回了多个结果.我怎样才能解决这个问题?此外,如何检索特定日期的所有结果?

java spring cassandra spring-data spring-data-cassandra

4
推荐指数
1
解决办法
3640
查看次数

Cassandra 中多租户数据库的推荐方法是什么?

我正在考虑使用 Apache Cassandra 创建一个多租户应用程序。

我可以想到三个策略:

  1. 同一密钥空间中的所有租户都使用租户特定的字段来确保安全
  2. 单个共享数据库中每个租户的表
  3. 每个租户的密钥空间

我脑海中的声音建议我选择选项 3。

想法和影响,有人吗?

cassandra cassandra-2.0 spring-data-cassandra cassandra-3.0

4
推荐指数
2
解决办法
1744
查看次数

DriverTimeoutException:PT2S 后查询超时。无法设置 spring.data.cassandra.request.timeout 属性?

当启动我的应用程序时,总是会创建键空间,并且可能会在 PT2S 错误消息之前创建一两个表。不知何故, spring.data.cassandra.request.timeout 属性不被尊重,或者我的配置可能有问题?“DriverConfigLoaderBuilderCustomizer”bean 没有任何区别。

pom.xml

<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<spring.framework.version>5.3.1</spring.framework.version>
Run Code Online (Sandbox Code Playgroud)

应用程序.yml

spring:
  data:
    cassandra:
      port: 9042
      keyspace-name: abc
      contact-points: localhost
      local-datacenter: datacenter1
      replication-factor: 1
      request:
        timeout: 15s
      connection:
        init-query-timeout: 15s
Run Code Online (Sandbox Code Playgroud)

CassandraConfig.java

@Configuration
@EnableReactiveCassandraRepositories(basePackages = "a.b.c.repository")
public class CassandraConfig extends AbstractReactiveCassandraConfiguration {
    @Value("${spring.data.cassandra.contactpoints}")
    .
    .
    @Override
    protected String getKeyspaceName() {
        return keyspace;
    }
    @Override protected String getContactPoints() {
        return contactPoints;
    }
    @Override protected int getPort() {
        return port;
    }
    @Override
    protected String getLocalDataCenter() {
        return datacenter;
    } …
Run Code Online (Sandbox Code Playgroud)

cassandra spring-data-cassandra

4
推荐指数
1
解决办法
9216
查看次数

Cassandra:每个键空间的客户数据

问题:我们的一位新客户希望将数据存储在他自己的国家(法律规定)。但是,我们使用分布在不同国家/地区的几个数据中心的现有客户数据。

问题:如何在不改变现有 Cassandra 架构的情况下,将新客户的数据分离到其本国?

潜在解决方案 #1:为此客户使用单独的密钥空间。键空间之间的模式将是相同的,这增加了数据迁移等的复杂性。DataStax 支持确认可以为每个区域配置密钥空间。但是我们使用的 Spring Data Cassandra 不允许动态选择键空间。唯一的方法是使用 CqlTemplate 并在use keyspace blabla每次调用之前运行或在表之前添加键空间,select * from blabla.mytable但这对我来说听起来像是一个黑客。

潜在的解决方案#2为新客户使用单独的环境,但管理层拒绝这样做。

还有其他方法可以实现这个目标吗?

cassandra spring-data-cassandra

3
推荐指数
1
解决办法
1056
查看次数

Cassandra Spring Data 不允许我直接通过复合主键查询数据

我正在尝试使用复合主键类使用 Spring Data Cassandra。但是当我尝试查询数据时出现异常:

org.springframework.data.repository.query.QueryCreationException: **Could not create query for public abstract java.util.List com.amdocs.cassandrapoc.repository.ServiceRepository.findByKey(com.amdocs.cassandrapoc.entities.Key)! Reason: Cannot use composite primary key directly. Reference a property of the composite primary key**
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

@PrimaryKeyClass
public class Key implements Serializable {

   @PrimaryKeyColumn(name = "id", ordinal = 0, type = 
      PrimaryKeyType.PARTITIONED)
   @CassandraType(type = DataType.Name.UUID)
      private UUID id;
   @PrimaryKeyColumn(name = "tenant", ordinal = 1, type = 
      PrimaryKeyType.PARTITIONED)
   @CassandraType(type = DataType.Name.TEXT)
      private String tenant;
  (Equals, hashcode, getters, setters omitted)
}

Table(value = "service")
public class Service implements …
Run Code Online (Sandbox Code Playgroud)

java composite-key cassandra spring-data spring-data-cassandra

3
推荐指数
2
解决办法
4721
查看次数