Hibernate - 如何手动生成id?

时间:2016-04-11 13:36:39

标签: grails gorm

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

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

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

3 个答案:

答案 0 :(得分:0)

使用地图中的mapobject.keyset()meathod映射值,然后相应地处理值

     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);

答案 1 :(得分:0)

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

但是你需要确保新实体知道这一点。 如果你只在你的主键上添加@Id注释(没有@GeneratedValue,...),你确保数据库也没有自动生成一个id它应该有用。

答案 2 :(得分:0)

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

@Id
private String id

private Date created
private Date modified

static mapping = {
    id column: 'id', generator: 'assigned'
}
asfsafas
sfasfsaf
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;
}

它有效。谢谢!