Hibernate - 如何手动生成 id?

Hibernate - how to generate id manually?

我正在 Java 中将数据从一个数据库迁移到一个新数据库。 我的问题之一是我必须保持实体的相同 id 值。

我知道可以更改 ID 生成器,但我需要手动设置 ID。 我使用 Map 从旧对象到新对象创建的每个实体,我只是设置值。 我不能手动设置类似的东西吗:

Map<String, Object> newEntity = new HashMap<String, Object>()
newEntity.setId(oldEntity.get("id"))

使用 map 中的 mapobject.keyset() 方法映射值,然后相应地处理这些值

     HashMap newmap = new HashMap();

      // populate hash map here you can assign your map values
     newmap.put(1, "tutorials");
     newmap.put(2, "point");
     newmap.put(3, "is best");

    // get keyset value from map
    Set keyset=newmap.keySet();

    // check key set values
    System.out.println("Key set values are: " + keyset);

您可以按照您在代码中描述的方式手动设置它。

但是你需要确保新实体知道这一点。 如果您只在主键上添加 @Id 注释(没有 @GeneratedValue,...)并且您确保数据库也不会自动生成它应该可以工作的 ID。

我成功了。 在我的实体中,我设置了以下内容:

@Id
private String id

private Date created
private Date modified

static mapping = {
    id column: 'id', generator: 'assigned'
}

public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}

public Date getCreated() {
    return created;
}

public void setCreated(Date created) {
    this.created = created;
}
public Date getModified() {
    return modified;
}
public void setModified(Date modified) {
    this.modified = modified;
}

它奏效了。谢谢!