java - Spring aerospike 数据 - 如何从集合中删除 @user_key 和 @_class 箱

标签 java spring-boot aerospike

我是 spring-aerospike-data 的新手,我希望有人能告诉我如何在发送时删除 @user_key@_class 垃圾箱向应用程序发布请求。我正在尝试在我的 Rest-api 中使用 spring-areospike-data。请看下面的例子:

  • POM 依赖:

     <dependency>
            <groupId>com.aerospike</groupId>
            <artifactId>spring-data-aerospike</artifactId>
            <version>3.0.0</version>
        </dependency>

  • Spring 版:2.5.1
  • 配置类:

    @Data
    @Component
    @ConfigurationProperties(prefix = "aerospike")
    public class AerospikeConfigurationProperties {
     private String host;
     private int port;
     private String namespace;
    }


     @Configuration
    @EnableConfigurationProperties(AerospikeConfigurationProperties.class)
    @EnableAerospikeRepositories(basePackages = "com.moneris.repositories")
    public class AerospikeConfiguration extends AbstractAerospikeDataConfiguration {
     @Autowired
     private AerospikeConfigurationProperties aerospikeConfigurationProperties;
     @Override
     protected Collection<Host> getHosts() {
        return Collections.singleton(new Host(aerospikeConfigurationProperties.getHost(), 
       aerospikeConfigurationProperties.getPort()));
    }
    @Override
    protected String nameSpace() {
        return aerospikeConfigurationProperties.getNamespace();
    }
   }

pom 依赖项: 这是我的 POJO:


    @Data
    @Document
    @AllArgsConstructor
    public class UserApi {
     @Id
     private String apiKey;
     private String apiName;
     private int enabled;
   
   }

这里是 repo :


    public interface AerospikeUserApiKeyRepository extends CrudRepository<UserApi, String> {
    
   }

这里是服务:


    @Service
    @AllArgsConstructor
    public class UserService {
   
        AerospikeUserApiKeyRepository aerospikeUserApiKeyRepository;
    public void addUserApiKey(UserApi userApi) {
        aerospikeUserApiKeyRepository.save(userApi);
    }
    
    public Optional<UserApi> getUserApi(String apiKey){
        return aerospikeUserApiKeyRepository.findById(apiKey);
    }
    
}

这里是 Controller :


    @RestController
    @AllArgsConstructor
    public class UserController {
    UserService userService;

    @PostMapping("/users/apiKey")
    public void addUserApi(@RequestBody UserApi userApi) {
        userService.addUserApiKey(userApi);;
    }
    
    @GetMapping("/users/apiKey/{apiKey}")
         public Optional<UserApi> getUserApi(@PathVariable("apiKey") String apiKey) {
        return userService.getUserApi(apiKey);
    }
}

当我运行我的应用程序并将发布请求发送到 http://localhost:8080/users/apiKey 时,带有以下 json 正文

{
    "apiKey": "ABC",
    "apiName": "TEST",
    "enabled": 1
}

我在 aerospike 数据库 enter image description here 中的记录低于记录 有什么办法不在集合中存储 @user_key 和 @_class 吗?

最佳答案

可以通过在上下文中提供以下 bean 来禁用存储 @class:

@Bean
@Override
public AerospikeTypeAliasAccessor aerospikeTypeAliasAccessor() {
    //we do not want to save @class field with type of document into Aerospike
    return new AerospikeTypeAliasAccessor(null);
}

请注意,禁用保存类型信息将导致无法读取具有通用数据类型的文档。

关于java - Spring aerospike 数据 - 如何从集合中删除 @user_key 和 @_class 箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68292496/

相关文章:

java - Spring Boot集成测试(业务层)

java - 如何在 Spring Boot 2 中添加自定义 ArgumentResolvers 而不启用 Web MVC?

golang客户端在aerospike中对cdt列表进行操作

java - 如何保持哈希表中元素的顺序

java - HALF_EVEN 四舍五入的目的是什么?

java - 为什么 Spring 中的 RestTemplate 必须传递参数名称

aerospike - 使用 asadm 检查 Aerospike 中的读写情况

python - Aerospike python 客户端的大数据类型

java - 使用自动递增列作为主键的数据插入

mac osx 中的 Java 7 路径