I'v开始寻找很好的解决方案,如何使用Spring CassandraOperations很好地持久化实体。问题的出现是因为我的实体中的某些字段不支持cassandra,例如joda DateTime。
解决方法是在java类型的同一实体中有其他字段。util。Date而不是joda DateTime,用@Transient标记未要求的字段。但这并不干净,所以我开始寻找自动自定义转换。
目前,spring数据cassandra参考并没有提供如何注册自定义转换器的信息。http://docs.spring.io/spring-data/cassandra/docs/current/reference/html/#cassandra.custom-转换器
是否可以在CassandraSessionFactoryBean中注册自定义转换器(如此处的Spring数据Cassandra LocalDateTime转换)?
这是我的代码@Configuration公共类CassandraConfig{
@Value("${cassandra.contactpoints}")
private String cassandraContactPoint;
@Value("${cassandra.port}")
private int cassandraPort;
@Value("${cassandra.keyspace}")
private String cassandraKeySpace;
@Bean
public CassandraClusterFactoryBean cluster() {
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
cluster.setContactPoints(cassandraContactPoint);
cluster.setPort(cassandraPort);
return cluster;
}
@Bean
public CassandraMappingContext mappingContext() {
return new BasicCassandraMappingContext();
}
@Bean
public CassandraConverter converter() {
return new MappingCassandraConverter(mappingContext());
}
@Bean
public CassandraSessionFactoryBean session() throws Exception {
CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
session.setCluster(cluster().getObject());
session.setKeyspaceName(cassandraKeySpace);
session.setConverter(converter());
session.setSchemaAction(SchemaAction.NONE);
return session;
}
@Bean
public CassandraOperations cassandraTemplate() throws Exception {
return new CassandraTemplate(session().getObject());
}
@Bean
public ConversionService getConversionService() {
ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
bean.setConverters(new HashSet<>(getConverters()));
bean.afterPropertiesSet();
return bean.getObject();
}
private Set<Converter<?, ?>> getConverters() {
Set<Converter<?, ?>> converters = new HashSet<>();
converters.addAll(Jsr310Converters.getConvertersToRegister());
converters.add(new DateTimeWriteConverter());
converters.add(new DateTimeReadConverter());
return converters;
}
public static class DateTimeWriteConverter implements Converter<DateTime, Long> {
@Override
public Long convert(DateTime source) {
return source.getMillis();
}
}
public static class DateTimeReadConverter implements Converter<Long, DateTime> {
@Override
public DateTime convert(Long source) {
return new DateTime(source);
}
}
}
当您创建CassandraCustomConversion bean时,Spring Cassandra的自定义转换有效。只需添加您的自定义转换器,默认转换器就会保留。下面是我的@Configuration类。
@Bean
CassandraCustomConversions cassandraCustomConversions() {
List<Converter<?, ?>> converters = new ArrayList<>();
converters.add(new MyDataReadConverter());
return new CassandraCustomConversions(converters);
}
static class CounterDataReadConverter implements Converter<ByteBuffer, MyData> {
@Override
public MyData convert(ByteBuffer source) {
try {
return MyData.parseFrom(source.array());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
我正在使用基于SpringBoot 2.0.0的spring-boot-starter-data-cassandra。释放。
主要内容:JSF自定义转换器实例我们可以在JSF中创建自己的自定义转换器。 以下列表是我们可以在JSF中创建自定义转换器的步骤。 通过实现接口创建一个转换器类。 实现上述接口的和方法。 使用注解为自定义转换器分配唯一的ID。 JSF自定义转换器实例 打开 NetBeans IDE 创建一个Web工程:CustomConverter,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文
问题内容: 我正在寻找一种用于SQL中自定义单位转换的解决方案,我公司使用的数据库是Microsoft SQL Server,因此我需要编写一个SQL以返回基于“单位转换表”的转换因子 说: 单位换算表: 问题:如果我有10盒,以克为单位的鸡翅的期末存货是多少? 如何编写此sql返回“转换因子”? 提前致谢 问题答案: 我认为递归表最好找到从您期望的单位到期望的单位之间的路径。这样的事情(这假设数
由来 Hutool中类型转换最早只是一个工具类,叫做“Convert”,对于每一种类型转换都是用一个静态方法表示,但是这种方式有一个潜在问题,那就是扩展性不足,这导致Hutool只能满足部分类型转换的需求。 解决 为了解决这些问题,我对Hutool中这个类做了扩展。思想如下: Converter 类型转换接口,通过实现这个接口,重写convert方法,以实现不同类型的对象转换 ConverterR
我为jsf创建了一个自定义转换器。getAsObject()工作正常,但getAsString()返回异常。我不确定问题出在哪里,我尝试过用不同的方式将对象转换为字符串,但它不断返回异常。 这是我的代码: 这是Product类(为简单起见排除了getter/Setters/equals()/hash()): 这是stack我得到的: 这是我使用转换器的jsf:
问题内容: 我必须处理动态JSON响应。 之前,我使用如下类和注释: 当状态为1(成功)时,将被触发,我可以得到一个ChatResponse对象。但是,当状态为0时,响应在JSON表示中为false,并且失败(触发)。 我想创建我的自定义转换器,这个问题有一个很好的示例,但是该示例适用于Retrofit 1。 我必须创建一个extends类,但是我不知道如何重写此类的方法。 其实我有下一个: 我现
给定maven shade插件资源转换器,我们如何创建自定义的资源转换器? [错误]无法执行项目目标org.apache.maven.plugins:maven-shade-plugin:2.4.1:Shade(默认)foo:无法解析mojo org.apache.maven.plugins:maven-shade-plugin:2.4.1:参数转换器的Shade:无法加载实现提示“test.tr