在现有的表结构继承中,我添加了一个新的列类型(我剪切了一些代码)
@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
答案 0 :(得分:3)
DDL生成用于开发而非生产。您看到的问题是因为当表已存在时,无法使用新字段创建表。删除和创建或者#34;创建或扩展表"如果要按照http://wiki.eclipse.org/EclipseLink/DesignDocs/368365
中所述添加到表格,则此功能将起作用