具有不同Java EE应用程序模式的两个表之间的数据迁移

时间:2012-08-15 01:01:59

标签: java sql database hibernate

我想将数据从一个表迁移到另一个表,除了具有不同表名的两个表,它们也有不同的模式。

例如,现有表格是:

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

在要求改变之后,我们将这两个类重构为:

@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”,我们所有的列都包含用户信息,如uuid,name,street和postcode。但是对于现有的,我们有两个表是“User”和“Address”,在“User”表中,有一个外键“address”,它使用主键引用表“Address”。

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

所以我想要做的是将“用户”和“地址”表中的所有数据信息迁移到一个表“UserChanged”,即用户+地址 - > UserChanged。

任何人都可以告诉我应该为此迁移要求编写的sql脚本。

1 个答案:

答案 0 :(得分:0)

insert into UserChanged (uuid, name, street, postcode) select a.uuid, u.name, a.street, a.postcode from address a, user u where a.uuid = u.address_id