エンティティのJavaコードとDDLの生成機能の案
もともとの案としては、Generation Gapパターンを使って親クラスと子クラスのコードを生成して子クラスのコードを好きに変更してもらおうと思っていました。例えばAddressテーブルからエンティティを生成する場合はこんな感じ。
親クラスのコード
@MappedSuperclass public abstract class AbstractAddress { @Id @GeneratedValue @Column(nullable = false) public Integer addressId; @Column(length = 20, nullable = true) public String street; @Version @Column(nullable = true) public Integer version; }
子クラスのコード
@Entity @Table(schema = "PUBLIC") public class Address extends AbstractAddress { }
でも、例えば、エンティティを基にSTREETカラムの長さ100にしてDDLを生成したいなぁというときは、子クラスのコードでそれは表現できないので親クラスのコードを触ることになるんですよね。