2011-11-10 1 views
6

persistence.xmlの名前を変更して、WebSphere 7を欺いて、組み込みのOpenJPAを使用しないようにする必要があります。名前が変更されたpersistence.xmlを使用するようにHibernateを設定します

あなたが春を使用する場合、あなただけのpersistence.xmlのために別の場所を使用するために、そのエンティティマネージャファクトリを指示行うことは非常に簡単です:

<property name="persistenceXmlLocation" value="META-INF/persistence-xxx.xml"/> 

しかし、今、我々は春なし無地にHibernate/JPAを使用したいです代替のpersistence.xmlの場所を指定する方法が見つかりませんでした。それについては何も言いません

JPA2スペック...

任意の手がかり? Hibernateに名前を変更したpersistence.xmlの使用を指示することは可能ですか?

======

Hibernateが名前を変更したpersistence.xmlのファイルを読み込む行うことは不可能であることが表示されます。 私の場合は必要ありません。

答えて

3

私が知る限り、persistence.xmlファイルの場所を変更することはできません。

Alternate JPA Providers in WebSphere Application Serverも参照してください。ファイルでHibernateをJPAプロバイダとして使用し、アプリケーションに必要なjarファイルを埋め込むことができるようです。

<persistence> 
    <persistence-unit name="myapp"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 

ます。また、共有ライブラリを作成し、代わりの持続性プロバイダを使用するようにWebSphereを構成するためにそれを使用することによって、これを達成することができるはずです。

は、あなたのpersistence.xmlは、JPAプロバイダとしてHibernateは指定されていることを確認します。 ここではあなたがそれを行う方法を見つけることができます:Configuring the Java Persistence API (JPA) default persistence provider

EDIT この回答のコメントで情報を考えると、この記事Websphere EntityManagerFactory creation problemに示すように、問題は、persistence.xmlでこれらのプロパティを追加することによって解決することができるようです。

<property name="hibernate.transaction.manager_lookup_class" 
value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup" /> 

<property name="hibernate.transaction.factory_class" 
value="org.hibernate.transaction.CMTTransactionFactory" /> 

この同じ情報は、WebSphere Application Serverドキュメントの代替JPAプロバイダにも記載されています。

+0

ありがとうございます!それは、アプリケーションをインストールしたり、指示書を書くたびに、追加のインストール手順を必要とします。しかし、他の方法も見つからない場合、これが唯一のオプションです - それを行う必要があります... –

+0

また、このドキュメントを見てください:[WebSphere Application Serverの代替JPAプロバイダ](http:///www.ibm.com/developerworks/mydeveloperworks/wikis/form/anonymous/api/library/53181ccd-bcd4-431f-b968-0b5f6d46d652/ document/192a432b-28bb-4080-b037-345e5d83da76/attachment/61e74f67-1d60-4120-ba25-ad7264c9f4f6/media/AlternateJPAProviders_TestReport.pdf)を参照してください。 persistence.xmlに 'provider'を指定してアプリケーションに必要なjarを埋め込むことで、hibernateを使用できるように見えます。答えの私の編集を参照してください。 –

+0

Xavi、プロバイダを指定しましたが、結果として 'サーバはjar:org://c:/ IBM/WebSphereのorg.hibernate.ejb.HibernatePersistenceプロバイダからxxx永続ユニット用のEntityManagerFactoryファクトリを作成できませんでした。 /wp_profile/installedApps/XXX/xxx-ear.ear/xxx-ejb.jar!/ module.'もちろん別の問題かもしれません... –

0

persistence.xmlは、通常、エンティティクラスを含むjarファイルとともにパッケージ化されたMETA-INFディレクトリに存在する必要があります。私は何をしているのですか?私は、persistence.xmlを含むMETA-INFディレクトリを使ってEclipseの下の独立したプロジェクトにエンティティ・クラスを持ち、これをjarファイルにパッケージ化し、それをアプリケーション・プロジェクトの依存関係(つまりWEB-INF/lib)を使用するか、アプリケーションサーバーに直接展開します。

関連する問題