GWT 1.5.3 を使用してデータベース アプリケーションを構築しようとしています。オブジェクトで JPA アノテーションを使用します。ホスト モードでは、GWT の RPC が正常に動作しているようです。しかし、GWT コンパイラを使用してアプリをコンパイルしようとすると、「インポート javax.persistence を解決できません」、「エンティティをタイプに解決できません」などのエラーが表示されます。toplink-essentials.jar は既にプロジェクト パスに含まれています。この問題を解決するには、他にどのような設定が必要ですか?
7 に答える
Gilead ( http://sourceforge.net/projects/gilead/ ) ライブラリを使用して、GWT で JPA エンティティをシームレスに管理できます。
よろしく
GWT プロジェクトのビルド パスに JPA アノテーションのソース コードを含める必要があります。詳細については、こちらを参照してください。
http://code.google.com/p/google-web-toolkit/issues/detail?id=1830&can=1&q=jpa
具体的には、問題を解決するこのjarファイル:
JPA と GWT の一般的な問題は、GWT 自体が高度な JPA クラスをサポートしていないため、Java.io.Serializable を実装し、単純な JPA リソース アノテーションを持つ単純な POJO 永続エンティティ DTO を実行するだけです。GWT クライアントのスコープでエンティティ クラスを作成する必要があります。それを yourproject.client パッケージの下に置くか、
ソースパス="クライアント"
source path="folderOfYourEntities"
GWT プロジェクトの YouProject.gwt.xml ファイル内。これにより、エンティティ オブジェクトが GWT クライアントに含まれ、RPC のクライアント側でも使用できるようになります。DAO はサーバー側にある必要があり、コンテナーがサポートするすべてのものを含めることができます。
あなたが今抱えている問題は、コンパイル時にGWTコンパイラが、エンティティDTOクラスにあるJPAアノテーションのインポートが何であるかがわからないと言ったことです。そのため、javax.persistence クラスとソース コードが必要です。Rustmyself による jpa-annotation-source.jar 参照が機能します。これは、javax.persistence でコンパイルされたクラス ファイルとソース コード ファイルに Persistence.gwt.xml を加えたものです。これは、javax.persistence パッケージ用のシンプルな GWT モジュールです。独自の GWT モジュールを作成する方法を知っている場合は、これらすべてを機能させるのに問題があるはずです。ちなみに、Java EE の公式ソースは、glassfish 開発サイトのビルド セクション wiki.glassfish.java.net にあります。
プロキシを使用して自動的にファンシー PU エンティティを単純なオブジェクトにラップしたり、実行時にそれらを遅延ロードしたりするソリューションは他にもたくさんあります。それらは機能しますが、最適なソリューションではありません。ベスト プラクティスは、GWT クライアント コンテキストに POJO JPA DTO エンティティを配置し、サーバーに本格的な DAO を配置することで、最初から物事をシンプルかつ堅牢にすることです。
GWTPersistence
の例
GWT と JPA をシームレスに動作させる方法について、実際に動作する例を追加しました。これは、ソース コードと配置ファイルを含む NetBean プロジェクトです。NingZhang.info の GWTPersistence を参照してください。
私はJPA <--> GWTデータ変換などにも取り組んでいます。
DTO レイヤーを排除するために、Gilead も使用しました。
ここでの私の反論は、javax.persistence の翻訳に関するものです。これを避けるために、XML JPA マッピング宣言 (orm.xml) を使用しました。
簡単に言えば、エンティティの別のバージョンを保持しますが、注釈は付けません!
わかりました、私は欠けていたものを見つけました。myapp-compile.cmd スクリプト (または ant ビルド ファイル) の GWT コンパイラ パスに jpa-annotations-source.jar を含める必要がありました。ところで、この jpa-annotations-source.jar ファイルの出所を誰か教えてもらえますか?
synergetic のコメントに反発して、(GWT 1.5 から) 追加するだけで済みます
<source path='javax.persistence'/>
Module.gwt.xml に