spring 存储库中的 Cassandra 计数器数据类型操作
Cassandra counter datatype operation in spring repository
我有一个 spring-boot 应用程序,如果不存在,我想在其中创建 Cassandra counter tables。我正在使用存储库。
用户积分 POJO:
/**
*
* @author Prakash Pandey 23-Nov-2017
*
*/
@Table("user_points")
public class UserPoints {
@PrimaryKeyColumn(name = "app_id", ordinal = 0, type = PrimaryKeyType.PARTITIONED)
private long appId;
@PrimaryKeyColumn(name = "user_name", ordinal = 0, type = PrimaryKeyType.CLUSTERED)
private String userName;
@Column(value = "points")
long points;
public long getAppId() {
return appId;
}
public void setAppId(long appId) {
this.appId = appId;
}
public long getPoints() {
return points;
}
public void setPoints(long points) {
this.points = points;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "UserPoints [appId=" + appId + ", userName=" + userName + ", points=" + points + "]";
}
}
UserPointRepository POJO:
@Repository
public interface UserPointRepository extends CassandraRepository<UserPoints> {
}
已在 Cassandra 数据库中成功创建 table,定义如下:
CREATE TABLE user_points (
app_id bigint,
user_name text,
points bigint,
PRIMARY KEY (app_id, user_name)
)
问题 是 points
列的数据类型是 bigint
,预期是 counter
数据类型。
我有两个问题:
- 如何创建计数器(具有计数器的列
数据类型)table 使用存储库。
- 如何使用更新(递增、递减)计数器列
存储库。
TL;博士
counter
存储库不支持它们,我不确定是否有好的方法来支持它们。
说明
Spring 数据存储库旨在 save/update 一个实体,将来自实际对象的数据传递给 save(Object)
。没有应用数据库端修饰符。计数器需要服务器端操作(递增、递减),无法通过 save(…)
方法表达。
我有一个 spring-boot 应用程序,如果不存在,我想在其中创建 Cassandra counter tables。我正在使用存储库。
用户积分 POJO:
/**
*
* @author Prakash Pandey 23-Nov-2017
*
*/
@Table("user_points")
public class UserPoints {
@PrimaryKeyColumn(name = "app_id", ordinal = 0, type = PrimaryKeyType.PARTITIONED)
private long appId;
@PrimaryKeyColumn(name = "user_name", ordinal = 0, type = PrimaryKeyType.CLUSTERED)
private String userName;
@Column(value = "points")
long points;
public long getAppId() {
return appId;
}
public void setAppId(long appId) {
this.appId = appId;
}
public long getPoints() {
return points;
}
public void setPoints(long points) {
this.points = points;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "UserPoints [appId=" + appId + ", userName=" + userName + ", points=" + points + "]";
}
}
UserPointRepository POJO:
@Repository
public interface UserPointRepository extends CassandraRepository<UserPoints> {
}
已在 Cassandra 数据库中成功创建 table,定义如下:
CREATE TABLE user_points (
app_id bigint,
user_name text,
points bigint,
PRIMARY KEY (app_id, user_name)
)
问题 是 points
列的数据类型是 bigint
,预期是 counter
数据类型。
我有两个问题:
- 如何创建计数器(具有计数器的列 数据类型)table 使用存储库。
- 如何使用更新(递增、递减)计数器列 存储库。
TL;博士
counter
存储库不支持它们,我不确定是否有好的方法来支持它们。
说明
Spring 数据存储库旨在 save/update 一个实体,将来自实际对象的数据传递给 save(Object)
。没有应用数据库端修饰符。计数器需要服务器端操作(递增、递减),无法通过 save(…)
方法表达。