既存のテーブル構造の継承で、新しい列タイプを追加しています (コードの一部をカットしました)
@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生成がAccountテーブルに新しく追加された列タイプを処理しているとき、正常に作成されますが、 Userテーブルにはそのような種類の列はまったくありません(戦略はTABLE_PER_CLASSです)。データベースを削除して再度作成したときに修正しました。その後、現在の世代の DLL が適用されました。ユーザーのタイプも列として追加されます。誰かがそのような問題に「遭遇」しましたか?DBのドロップと作成で修正しましたが、特に本番DBの場合、将来同じ場合の戦略であるべきかどうかはわかりません
ありがとう、シメオン・アンジェロフ