spring aerospike数据-如何从集合中删除@user_key和@u class bin

b4wnujal  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(362)

我是 Spring aerospike数据的新手,我希望有人能让我知道如何删除这些数据 @user_key@_class 我向应用程序发送post请求时的bins。我正在尝试在RESTAPI中使用spring areospike数据。请参见bleow示例:
pom dependecis:

<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;

   }

以下是回购协议:

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);
    }

}

这里是控制器:

@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);
    }
}

当我运行应用程序并将post请求发送到 http://localhost:8080/users/apiKey 下面是json正文

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

我在aerospike数据库中的成绩低于记录

有什么办法不可以吗 @user_key and @_class 在片场?

4ngedf3f

4ngedf3f1#

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

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

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

7rtdyuoh

7rtdyuoh2#

spring数据aerospike同时存储这两种数据 @_class@user_key 默认情况下,箱子是开箱即用的。
我们储存 @_class bin,以便了解在从aerospike读取记录时如何将对象Map回普通的旧java对象(pojo)。
我们储存 @user_key 由于aerospike在保存记录时不存储密钥或摘要,因此您可以在此处阅读有关aerospike数据模型的更多信息:https://docs.aerospike.com/docs/architecture/data-model.html,因此,当您有历史数据时,了解原始用户密钥很有帮助。
您可以禁用@_类,但会产生后果。请查看anastasiia smirnova的评论。

相关问题