これを動作させるには、Hibernateをブートストラップする必要があります。これを行うには:
メインクラスで、EntityManagerFactoryインスタンスを探します。おそらく次のようになります。
public static final EntityManagerFactory EMPFAC = Persistence.createEntityManagerFactory("jpa")
この行は今のところ残してください。その上、以下の追加:
private static StandardServiceRegistryBuilder servReg = new StandardServiceRegistryBuilder();
static {
//Do this for every property in persistence.xml
servReg.applySetting("hibernate.connection.url", "jdbc://myurl://www.example.org");
}
がpersistence.xml
のすべてのプロパティのservReg.applySetting()
を追加します。次に、その下にこれを追加します。
private static MetadataSources sources = new MetadataSources(servReg.build());
static {
// Do this for every pojo with JPA annotations
sources.addAnnotatedClass(Pojo.class);
}
は、アプリケーション内のすべてのJPA-注釈付きのPOJOのためsources.addAnnotatedClass()
を追加します。ほとんどここでやった。今、そのようStatementInspector
を実装するクラスを作成します。
public class Inspector implements StatementInspector {
private static final long serialVersionUID = 5545844969759630544L;
@Override
public String inspect(String select) {
// modify string here
return select;
}
}
最後に、あなたがあなたのPOJOを登録し、静的なブロックの下に、以下を追加し、バックメインアプリケーションクラスに行く、と:
public static final SessionFactory EMPFAC = sources.buildMetadata().getSessionFactoryBuilder().applyStatementInspector(new Inspector()).build();
今度はpersistence.xml
に戻り、そこでプロパティ宣言を削除することができます。あなたがまだ持っていない場合は、public static final EntityManager
宣言を削除してください(あなたはそれをSessionFactoryに置き換えました)。
編集:実際にはpersistence.xml
を削除することができ、アプリケーションは正常に動作するはずです。
すべてセット!