2016-04-11 20 views
0

私はJavaで1つのデータベースから新しいデータベースへのデータ移行に取り組んでいます。 私の問題の1つは、エンティティの同じid値を保持する必要があることです。Hibernate - idを手動で生成する方法は?

id generatorを変更することは可能ですが、手動でidを設定する必要があります。 古いオブジェクトから新しいオブジェクトへのマップを使用して作成した各エンティティは、値を設定するだけです。

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

答えて

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

となりました。ありがとう!

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

手動方法でそれを設定することができます値を処理: は、私はちょうどのようなものを手動で設定することはできません。あなたのコードに記述されています。

しかし、新しいエンティティがこれを知っていることを確認する必要があります。 プライマリキー(@GeneratedValue、...)に@Id注釈だけを追加して、データベースが自動的にIDを生成していないことを確認した場合、それは動作するはずです。

+0

ありがとう、 これはGroovyとGORMを使用したGrailsプロジェクトです @GeneratedValueの のうちどれを使用しますか? 私はセットとしてプライベート: \tプライベート文字列ID 、次いで: 静的マッピング= { \t \tテーブル 'ダッシュボード' \t \tシートカラム: 'dashboardId'、joinTable:偽 \t \t ID列: 'id'、generator: 'assigned' \t} –

+0

@TomerKfir解決策を見つけられたらうれしいです。しかし、あなたが投稿したソリューションでは、私は以下を削除するでしょう: asfsafas sfasfsaf – mahieus

関連する問題