我正在尝试为我的数据库生成不同的id但它保持生成0并删除旧记录如何在此代码中生成id知道我需要id为前端角度服务的int。
@Document(collection = "tasks")
public class Task {
@Id
@Field(value = "task_id")
private int id;
@Field(value = "task_name")
private String taskName;
@Field(value = "task_description")
private String taskDescription;
@Field(value = "task_priority")
private String taskPriority;
@Field(value = "task_status")
private String taskStatus;
@Field(value = "task_archived")
private int taskArchived = 0;
//set and get
}
答案 0 :(得分:0)
最简单的方法是使用Java提供的方法之一生成唯一ID
根据您的需求选择最合适的一个。以下是使用AtomicInteger解决问题的方法:
@Document(collection = "tasks")
public class Task {
@Id
@Field(value = "task_id")
private int id;
@Field(value = "task_name")
private String taskName;
@Field(value = "task_description")
private String taskDescription;
@Field(value = "task_priority")
private String taskPriority;
@Field(value = "task_status")
private String taskStatus;
@Field(value = "task_archived")
private int taskArchived = 0;
@Transient
private AtomicInteger incrementor = new AtomicInteger(0);
public Task() {
id = incrementor.incrementAndGet(0);
}
//set and get
}
此外,您必须使用@Transient
来避免增量器持久存储在文档存储中。
答案 1 :(得分:0)
我找到了两种方法来做到第一次
private static final AtomicInteger counter = new AtomicInteger();
public static int nextValue() {
return counter.getAndIncrement();
}
/*******************/
@Id
@Field(value = "task_id")
private int id = nextValue();
第二个我认为一个技巧是使用当前日期作为整数
private int id = (int) (new Date().getTime()/1000);