Cassandra Achilles:一对多映射

Cassandra Achilles: One to many mapping

我正在使用 Cassandra 3.6 和 Achilles。我在 Cassandra 中设计了以下 table。

CREATE TABLE userVehicles (
  userid text,
  name text static,
  surname text static,
  vehicleNum text,
  vehicleMake text,
  vehicleModel text,
  vehicleYear text,
  PRIMARY KEY (userid)
);

我将有许多车辆附加到单个用户,当我 select 与 UserId 时,我应该获得用户详细信息并且所有车辆都属于他。

如何在 Achilles 中映射这个?

正在更新table

CREATE TYPE Vehicle(
---------
)

然后在 userVehicles table

vehicleDetails LIST<FROZEN<Vehicle>>

尝试了 Achillies 映射

@Table(keyspace="keyspace", table="userVehicles")
public class UserDetails{

    @PartitionKey(value = 1)
    private String userid ; 

    @Column
    private String name ;

    @Column
    private String surname;

    @Column
    private List<@Frozen Vehicle> vehicle;
}

@UDT(keyspace="keyspace", name="vehicle")
public class Vehicle {

    @Column
    private String vehicleNum ; 

    @NotNull
    @Column
    private String vehicleMake ;

    @Column
    private String vehicleModel ; 

    @NotNull
    @Column
    private String vehicleYear ;

}

@Configuration
@CompileTimeConfig(cassandraVersion = CassandraVersion.CASSANDRA_3_7)
public class AchillesConfiguration {

    @Autowired
    ManagerFactory managerFactory;

    @Bean
    public User_Manager userEntityManager(){
        return managerFactory.forUser(); 
    }

}

答案已在上面的映射中更新。对于嵌套表,这是您在使用 Achilles 框架的 Cassandra 中应该采用的方式。