eclipseでJPAのメタモデルを自動生成する設定

  1. プロジェクトのプロパティを開く
  2. Project FacetsでJPAにチェックを付けてプロジェクトにJAPサポートを追加
  3. プロジェクトのプロパティをいったん閉じる(重要!これをしないとJAPの設定項目が現れない)
  4. プロジェクトのプロパティを再び開く
  5. Java Persistenceの一番下「Canonical metamodel (JPA 2.0)」でソースフォルダを設定する

ついでに「Discover annotated classes automatically」にチェックを入れておくとエンティティを追加したときにいちいちpersistence.xmlを編集しなくていいので便利です。


自動生成されるpersistence.xmlのソースフォルダを変える

上記手順を踏んでJPAサポートをプロジェクトに追加すると、persistence.xmlJPAの設定ファイル)がソースフォルダに作成されるのですが、ソースフォルダが複数ある場合、一番上のソースフォルダ内に作られるということに注意が必要です。


Mavenを使っているときはJavaのソースを格納するソースフォルダとリソースを格納するソースフォルダが分かれていることが普通ですから、persistence.xmlはリソース用の方に格納したいわけです。


しかし、理由は分からないのですが、自動生成されたpersistence.xmlのソースフォルダを変えるとJPAサポートがうまく動作しなくなります。
そこで苦し紛れに以下のような方法を取りました。

  1. JPAサポートを追加する前に.classpathを編集してsrc/java/resourcesが一番上になるようにする
  2. JPAサポートを追加する
  3. persistence.xmlがsrc/java/resourcesに作られたことを確認する
  4. .classpathを編集してソースフォルダの順番を元に戻す

うーん、BKだ。