質問
GWT 1.5.3を使用してデータベースアプリケーションを構築しようとしています。私はオブジェクトに JPA アノテーションを使用します。ホストモードではGWTのRPCが正常に動作しているようです。しかし、GWT コンパイラーを使用してアプリをコンパイルしようとすると、次のようなエラーが発生します。「インポート javax.persistence を解決できません」、「エンティティを型に解決できません」。toplink-essentials.jar はプロジェクト パスにすでに含まれています。この問題を解決するには他にどのような設定が必要ですか?
解決 4
[OK]を、私は欠けていたものを発見しました。私はmyappの-compile.cmdスクリプト(またはAntビルドファイル内)での私のGWTコンパイラのパスにJPA-注釈-source.jarを含める必要がありました。ちなみに誰も私にこのJPA-注釈-source.jarファイルの起源を伝えることができますか?
他のヒント
あなたはギレアデを使用することができます( http://sourceforge.net/projects/gilead/する)シームレスGWTとJPAエンティティを管理するためのライブラリます。
よろしく
あなたはGWTプロジェクトのビルド・パスにJPAの注釈のソースコードを含める必要があります。詳細はこちらを参照してください。
ます。http://コード。 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 パッケージの下に置くか、次のコマンドを使用して追加します。
ソースパス = "クライアント"
ソースパス = "エンティティのフォルダー"
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層を排除するための努力においてギリアドすぎます。
ここでの私の異議はのjavax.persistence翻訳についてです。これを回避するために、I使用するXML JPAマッピング宣言(orm.xml)
単に、あなたのエンティティの別のバージョンを維持するが、注釈なし!
の相乗コメントに跳ね返り、あなたは今(GWT 1.5から)のみを追加する必要があります。
<source path='javax.persistence'/>
あなたのModule.gwt.xmlへ