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 中应该采用的方式。
我正在使用 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 中应该采用的方式。