如何使用 spring-data-aerospike 制作 Set

How to make Set using spring-data-aerospike

环境:

这是我的应用程序代码和属性。

// application.properties
aerospike.hosts=xxx:3000
aerospike.namespace=test

// aerospike configuration class
@Configuration
@RequiredArgsConstructor
@EnableConfigurationProperties(AerospikeConfiguration.AerospikeConfigurationProperties.class)
@EnableAerospikeRepositories(basePackageClassses = TestAeroRepository.class)
public class AerospikeConfiguration extends AbstractAerospikeDataConfiguration {
  private final AerospikeConfigurationProperties aerospikeConfigurationProperties;

  @Override
  protected Collection<Host> getHosts() {
      return Host.parseServiceHosts(aerospikeConfigurationProperties.getHosts());
  }

  @Override
  protected String nameSpace() {
    return aerospikeConfigurationProperties.getNamespace();
  }

  @Data
  @Validate
  @ConfigurationProperties("aerospike")
  public static class AerospikeConfigurationProperties {
     @NotEmpty
     String hsots;

     @NotEmpty
     String namespace;
  }
}

# Entity class
@Value
@Document
@Builder(toBuilder = true)
@AllArgsConstructor
public class testEntity() {
   @Id
   int id;

   @Field
   String name;

   @Field
   String timestamp;
}

@Repository
public interface TestAeroRepository extends AerospikeRepository<TestEntity, Integer> {
}

public interface TestAeroService {
  void save();
}

@Service
@RequiredArgsConstructor
public class TestAeroServiceImpl implements TestAeroService {
  private final TestAeroRepository testAeroRepository;

  @Override
  public void save(TestEntity entity) {
    testAeroRepository.save(entity);
  }
}

我检查了Aerospike客户端连接没有问题。 但是执行save()方法时出现错误

org.springframework.cglib.core.ReflectUtils.defineClass(Ljava/lang/String;[BLjava/lang/ClassLoader;Ljava/security/ProtectionDomain;Ljava/lang/Class;)Ljava/lang/Class;

在执行应用程序之前必须进行设置吗?
我没有做布景。 我的代码有问题吗?

您使用的是旧版本的 spring-data-aerospike(2.0.1.RELEASE 于 2019 年 4 月发布)是否有机会升级到最新版本? 2.4.2.RELEASE

您可以在此处查看如何设置简单的 spring 数据 aerospike 应用程序:https://medium.com/aerospike-developer-blog/simple-web-application-using-java-spring-boot-aerospike-database-and-docker-ad13795e0089

请分享整个项目的代码和整个异常。

我会调查:

  1. 配置 class(Aerospike Beans 创建)。
  2. testEntity 的内容class - 您是否在主键字段上使用@Id 注释?
  3. 通过指定 testEntity 对象扩展存储库 class (... extends AerospikeRepository {) 您可以在我添加的 link 中看到一个示例。

该集合是自动创建的,并采用您的对象的名称 class,在您的例子中是 testEntity。例如,根据您的代码,如果您未在 @Document 注释中指定集合,则会自动创建一个名为 "testEntity" 的集合。我添加了 @Document(collection = "testEntitys") 注释,我所做的只是创建了两个集合。插入第一条记录后,运行 "SHOW SETS" aql 命令,它就会在那里。所以这是一种方法。