EclipseLink“drop-and-create-tables”在继承的类中没有添加列,在超类中使用InheritanceType.TABLE_PER_CLASS

时间:2013-01-29 12:01:04

标签: jpa eclipselink

在现有的表结构继承中,我添加了一个新的列类型(我剪切了一些代码)

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Account {
    ......        

    @Column                            // already existed column 
    private String name;               // get/set also applied

    @Column(length=20)                 // new added column 
    @Enumerated(EnumType.STRING)       // get/set also applied 
    private AccountType type; 

    ..........
}

@Entity
public User extends Account {
    ................                   // some other already existed fields
}

在我的persistence.xml文件中,我正在使用DDL生成的下一个策略策略

property name="eclipselink.ddl-generation" value="drop-and-create-tables"

当DDL生成正在处理时,帐户表中新添加的列类型已成功创建,但用户表中没有这样的类根据列(策略是TABLE_PER_CLASS)。 我修复了当我删除数据库并再次创建它时。之后应用当前生成的DLL - 用户中的类型也作为列添加。有人“遇到”了这样的问题吗?我用drop修复了DB并创建了DB,但我不确定将来是否应该是相同的策略,特别是对于生产DB

谢谢, Simeon Angelov

1 个答案:

答案 0 :(得分:3)

DDL生成用于开发而非生产。您看到的问题是因为当表已存在时,无法使用新字段创建表。删除和创建或者#34;创建或扩展表"如果要按照http://wiki.eclipse.org/EclipseLink/DesignDocs/368365

中所述添加到表格,则此功能将起作用