0

各オブジェクト間のマッピングを持つ一連のエンティティ クラスがあるとします。

@Entity
@Table(name = "legacy")
public class Legacy {
    // Mappings to a bunch of other different Entities
}

@Entity
@Table(name = "new_entity")
public class NewEntity {

    private Legacy legacy;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "legacy_id", referencedColumnName = "id")
    public Legacy getLegacy() {
        return legacy;
    }

    public Legacy setLegacy(Legacy legacy) {
        this.legacy = legacy;
    }

    // Mappings to other new stuff
}

クラスを hibernate で使用してConfiguration、いくつかの注釈付きクラスの作成スクリプトを生成できます。

Configuration config = new Configuration();

Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.SQLServer2005Dialect");
config.setProperties(properties);

config.addAnnotatedClass(NewEntity.class)

String[] schema = 
        config.generateSchemaCreationScript(new SQLServer2005Dialect());
for (String table : schema) {
    System.out.println(table);
}

ただし、クラスLegacyが構成に追加されていないため、これは失敗します。ただし、それを行う場合は、他のレガシー クラスを追加する必要があります (これらのクラスにはすべて、既に「機能する」マッピングとテーブルがあります。

NewEntityのすべてのマッピングを追加せずに、 のスクリプトのみを生成する方法はありLegacyますか? 現在、レガシー マッピングにコメントを付けて NewEntity のスクリプトを生成し、手動で追加し直しています。

4

1 に答える 1

1

NewEntity が、マップされたリレーションシップで Legacy オブジェクトを参照して対話する場合は、マップする必要があります。

とにかく、まだマップされていない場合、休止状態の操作はどのように機能しますか?

新しい作成 db スクリプトを生成する代わりに、既存のスキーマの更新スクリプトが必要な場合は、メソッドを試してくださいgenerateSchemaUpdateScript

于 2013-05-08T10:14:01.417 に答える