我有一个名为 Task 的实体,它有 taskId 字段。问题是我需要创建/更新一些特定的任务,而 JPA 自动生成器不允许我手动设置 taskId。(它覆盖了我的 taskId)
有没有办法手动设置taskId?
@Id
@Column(name = "task_id")
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "org.hibernate.id.UUIDGenerator")
private String taskId;
最佳答案
@GeneratedValue 注释不允许用户手动设置值。您可以手动生成一些如下所示的字符串格式,并使用 @Id 标记 taskId 列,而不是使用该注释
String hql = "from MasterCount where itemType=:type";
Query<MasterCount> query = session.createQuery(hql);
query.setParameter("type", "task");
MasterCount count = query.uniqueResult();
int lastId = count.getItemId() + 1;
count.setItemId(lastId);
task.setTaskId("task0"+lastId);
即创建一个包含 itemId 和 itemType 列的主表。分别在列中保存“任务”和 0。检查最后输入的值,增加 1 并再次保存。
关于java - 如何手动设置自动生成的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45102456/