如何使用Spring Data Cassandra将域对象映射到CQL表?

时间:2014-10-17 19:06:03

标签: java spring cassandra spring-data-cassandra

我有两个模型类:

public class AlertMatchesDTO implements Serializable
{
  private static final long serialVersionUID = -3704734448105124277L;

  @PrimaryKey
  private String alertOid;

  @Column("matches")
  private List<HotelPriceDTO> matches;
...
}

public class HotelPriceDTO implements Serializable
{
  private static final long serialVersionUID = -8751629882750913707L;

  private Long hotelOid;
  private double priceByNight;
  private Date checkIn;
  private Date checkOut;
...
}

我希望使用Spring Data在Cassandra列族中保留第一个类的实例。特别是使用像这样的Cassandra模板:

...
cassandraTemplate.insert(dto, writeOptions); 
...

和Spring Data在序列化List<HotelPriceDTO>时遇到问题。我认为我需要的是一种告诉cassandraTemplate如何转换类型的方法。在官方文档中,a chapter告诉我必须使用CassandraMappingConverterMappingCassandraConverter,但它们还没有提供示例。

我的问题是:是否有一个如何注册这样的转换器的示例(在项目的测试代码中,可能是?)或者在官方文档完成时我可以使用的任何其他示例?提前谢谢。

1 个答案:

答案 0 :(得分:0)

讨厌这样说,但你应该在http://docs.spring.io/spring-data/cassandra/docs/1.1.0.RELEASE/reference/html/进行RTFM。

话虽如此,我注意到你的类名上有DTO个后缀,这对我来说意味着你可能没有域模型,只有一个带有DTO的服务层。如果是这种情况,您可以考虑将自己的映射定义为RowMapper实现,只需使用CqlTemplate而无需使用铃声和放大器。 Spring Data Cassandra的口哨声。如果您选择融合DTO和实体的体系结构概念(实体是持久域对象),您可以自由使用Spring Data Cassandra以及所需的映射元数据(@Table@PrimaryKeyColumn等)。你的选择。

有关实体诉DTO的主题的更多阅读,请参阅http://goo.gl/gPBFpu