あるテーブルから別のテーブルにデータを移行したいのですが、テーブル名が異なる2つのテーブルに加えて、スキーマも異なります。
たとえば、既存のテーブルは次のとおりです。
@Entity
public class Address {
private String uuid;
private String street;
private String postcode;
}
@Entity
public class User {
private String uuid;
private String name;
@One2One
private Address address;
}
要件が変更された後、2 つのクラスを次のようにリファクタリングします。
@Entity
public class UserChanged {
private String uuid;
private String name;
@Embedded
@AttributeOverrides(.....)
private Address address;
}
@Embeddable
public class AddressChanged {
private String street;
private String postcode;
}
つまり、新しいテーブルには「UserChanged」というテーブルが 1 つだけあり、すべての列に uuid、名前、番地、郵便番号などのユーザー情報が含まれています。ただし、既存の場合、「ユーザー」と「アドレス」の2つのテーブルがあり、「ユーザー」テーブルには、主キーを使用してテーブル「アドレス」を参照する外部キー「アドレス」があります。
Address
------------------
uuid varchar (primary key)
street varchar
postcode varchar
User
------------------
uuid varchar (primary key)
name varchar
address_id varchar (foreign key)
UserChanged
------------------
uuid varchar (primary key)
name varchar
street varchar
postcode varchar
したがって、「User」テーブルと「Address」テーブルのすべてのデータ情報を「UserChanged」テーブル、つまり User + Address -> UserChanged に移行する必要があります。
この移行要件のために作成する必要がある SQL スクリプトは誰でも教えてくれます。