如何使用 spring-data-aerospike 制作 Set
How to make Set using spring-data-aerospike
环境:
- spring-boot v2.0.4 发布
- spring-data-aerospike v2.0.1.RELEASE
- java - 8
这是我的应用程序代码和属性。
// 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
请分享整个项目的代码和整个异常。
我会调查:
- 配置 class(Aerospike Beans 创建)。
- testEntity 的内容class - 您是否在主键字段上使用@Id 注释?
- 通过指定 testEntity 对象扩展存储库 class (... extends AerospikeRepository
{) 您可以在我添加的 link 中看到一个示例。
该集合是自动创建的,并采用您的对象的名称 class,在您的例子中是 testEntity。例如,根据您的代码,如果您未在 @Document
注释中指定集合,则会自动创建一个名为 "testEntity"
的集合。我添加了 @Document(collection = "testEntitys")
注释,我所做的只是创建了两个集合。插入第一条记录后,运行 "SHOW SETS"
aql 命令,它就会在那里。所以这是一种方法。
环境:
- spring-boot v2.0.4 发布
- spring-data-aerospike v2.0.1.RELEASE
- java - 8
这是我的应用程序代码和属性。
// 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
请分享整个项目的代码和整个异常。
我会调查:
- 配置 class(Aerospike Beans 创建)。
- testEntity 的内容class - 您是否在主键字段上使用@Id 注释?
- 通过指定 testEntity 对象扩展存储库 class (... extends AerospikeRepository
{) 您可以在我添加的 link 中看到一个示例。
该集合是自动创建的,并采用您的对象的名称 class,在您的例子中是 testEntity。例如,根据您的代码,如果您未在 @Document
注释中指定集合,则会自动创建一个名为 "testEntity"
的集合。我添加了 @Document(collection = "testEntitys")
注释,我所做的只是创建了两个集合。插入第一条记录后,运行 "SHOW SETS"
aql 命令,它就会在那里。所以这是一种方法。