2012-06-14 50 views
0

由于我的控制,我有两个现有的数据库几乎是克隆。EclipseLink/JPA和具有相似结构的多个数据库

“几乎”,因为在#2中不存在表格/列,反之亦然。

这里最好的办法是什么?

“强力”路线似乎是“为一个创建所有实体,复制到新软件包并为第二个数据库添加/删除”。这不是我真正想去的路线。


哦,JPA是绝对不允许改变其中任何一个数据库架构。

除了EclipseLink,我使用Spring 3.1和SpringData。

回答

0

如果你的数据库不同,你需要创建不同的类/映射。例如,如果你在有DB1 3列(idbazpleh)和DB2其他3列两个数据库有一个表Fooidbazqux),你可以这样做:

@Entity 
public class Foo 
{ 
    @Column(name = "id") 
    private Long id; 
    @Column(name = "baz") 
    private String baz; 
    @Column(name = "pleh") 
    private String pleh; 
    @Column(name = "qux") 
    private String qux; 
} 

这样做会导致异常的JPA会产生插入语句,如:

insert into Foo (id, baz, pleh, qux) values (?, ?, ?, ?) 

对于DB1,你需要创建一个类Foo这样的:

@Entity 
public class Foo 
{ 
    @Column(name = "id") 
    private Long id; 
    @Column(name = "baz") 
    private String baz; 
    @Column(name = "pleh") 
    private String pleh; 
} 

而对于DB2这样的:

@Entity 
public class Foo 
{ 
    @Column(name = "id") 
    private Long id; 
    @Column(name = "baz") 
    private String baz; 
    @Column(name = "qux") 
    private String qux; 
} 
相关问题