我正在使用以下驱动程序。
implementation 'com.datastax.astra:astra-spring-boot-starter:0.3.0'
implementation 'com.datastax.oss:java-driver-core:4.14.1'
implementation 'com.datastax.oss:java-driver-query-builder:4.14.1'
implementation 'com.datastax.oss:java-driver-mapper-runtime:4.14.1'
implementation 'org.springframework.boot:spring-boot-starter-data-cassandra'
以下是我的实体:
@NamingStrategy(convention = NamingConvention.SNAKE_CASE_INSENSITIVE)
@CqlName("engine_torque_by_last_miles")
@Entity
public class EngineTorqueByLastMiles {
private UUID id;
@PartitionKey(1)
private String vinNumber;
}
下面是我的存储库:
public interface EngineTorqueByLastMilesRepository extends CassandraRepository<EngineTorqueByLastMiles, String> {
List<EngineTorqueByLastMiles> findAllByVinNumberAndOrganizationId(String vinNumber, Integer organizationId);
}
我所面临的问题是soring.data.jpa.cassandra没有将实体名称或属性Map到snake_case,即使在使用了datastax驱动程序中的NamingStrategy或CqlName注解之后也是如此。
datastax是否提供任何支持jpa的驱动程序,以便我可以用典型的java命名约定和cassandra表或带有snake_case的属性来编写我的实体及其属性?
2条答案
按热度按时间bvjveswy1#
Datastax确实提供了一种将对象Map到Cassandra表的方法,它被称为Cassandra对象Map器。文档在这里https://docs.datastax.com/en/developer/java-driver/4.13/manual/mapper/但您不需要它。
看一下你的代码,你似乎想使用Spring Data Cassandra。这完全没问题。你只是没有使用正确的注解集。你应该使用Spring Data 注解。
您的Bean变为:
last_miles
,但问题中没有提供。@PrimaryKey
(sample)对其进行注解。您可以在这里找到一个完整的工作应用程序,其中包含多个实体https://github.com/datastaxdevs/workshop-betterreads/tree/master/better-reads-webapp
如果您编辑或完成您的问题,我们可以建议确切的豆子需要。
8e2ybdfx2#
请尝试设定属性:
因为Hibernate 5是默认的,您将获得蛇式命名。
有关详细参考信息,请参阅此处的文档