問題タブ [datanucleus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
eclipse - datanucleusエンハンサーとjavaw:「パラメーターが正しくありません」
私はWindowsXPを使用しており、gwt+gaeアプリ用のeclipseとdatanucleusエンハンサーを使用しています。エンハンサーを実行すると、エラーが発生します。
私は以前にこの問題を抱えていましたが、それは長いクラスパスが原因でした。ライブラリを移動したり、Eclipseのインストールを移動したりして、クラスパスを1時間半短縮しましたが、運がありませんでした。
どこから答えを探し始めるべきかについてのアイデアはありますか?エラーメッセージには、それがどのディレクトリにあるかなどに関する情報は含まれていません。ちょっと腹立たしいです!javawの出力をより詳細にすることは可能ですか?このクラスパスサイズのバグを回避することは可能ですか?
java - Eclipseでコンパイラオプション「プロセッサ」を設定するにはどうすればよいですか?
次の手順に従って、DataNucleusエンハンサーを構成しようとしています。
Eclipseを使用している場合は、プロジェクトのプロパティを編集する必要があります。「Javaコンパイラ」->「注釈処理」に移動し、プロジェクト固有の設定を有効にして、注釈処理を有効にします。次に、[Javaコンパイラ]->[アノテーション処理]->[ファクトリパス]に移動し、プロジェクト固有の設定を有効にしてから、次のjarをリストに追加します:datanucleus-enhancer.jar、datanucleus-core.jar、jdo-api.jar、asm.jarコンパイラ引数プロセッサをorg.datanucleus.enhancer.EnhancerProcessorに設定します
大胆な文章にたどり着くまでは、すべて素晴らしかったです。それらが何を意味するのか理解できないようです。誰かがこの文を拡張して、より初心者に優しいものにすることはできますか?:)
java - JDO を使用して、特定のインターフェースを実装するすべてのオブジェクトを照会することは可能ですか?
次のクエリを使用してみました。
しかし得た:
org.datanucleus.exceptions.NoPersistenceInformationException: クラス
「com.sampleapp.data.dataobjects.ICommentItem」は持続可能である必要がありますが、このクラスのメタ データ/注釈が見つかりません。メタデータ/注釈が有効なファイルの場所に定義されていることを確認してください。
Datanucleus フォーラムで、誰かが (数年前) を使用して提案したのを見ました:
試してみましたが、スキーマ更新を実行してもテーブルが作成されませんでした。タグはまだ関連性がありますか? ドキュメントには何も表示されません。
私も試しました:
しかし、schema-create を実行すると、次のエラーが発生しました。
dataobjects.ICommentItem 2010 年 10 月 23 日 6:46:33 PM org.datanucleus.enhancer.asm.ASMClassEnhancer 拡張情報: クラス "com.sampleapp.data.dataobjects.Article" は既に拡張されています。2010 年 10 月 23 日 6:46:33 PM org.datanucleus.enhancer.DataNucleusEnhancer addMessage SEVERE: DataNucleus Enhancer がエラーで完了しました。詳細については、エンハンサー ログを確認してください。一部のクラスは強化されている可能性がありますが、一部のエラーが発生しました クラスの強化中の失敗 - 詳細についてはログを参照してください(DataNucleusEnhancer.java:620) org.datanucleus.enhancer.DataNucleusEnhancer.main (DataNucleusEnhancer.java:1316) で ASMClassEnhancer 拡張情報: クラス "com.sampleapp.data.dataobjects.Article" は既に拡張されています。2010 年 10 月 23 日 6:46:33 PM org.datanucleus.enhancer.DataNucleusEnhancer addMessage SEVERE: DataNucleus Enhancer がエラーで完了しました。詳細については、エンハンサー ログを確認してください。一部のクラスは強化されている可能性がありますが、一部のエラーが発生しました クラスの強化中の失敗 - 詳細についてはログを参照してください(DataNucleusEnhancer.java:620) org.datanucleus.enhancer.DataNucleusEnhancer.main (DataNucleusEnhancer.java:1316) で ASMClassEnhancer 拡張情報: クラス "com.sampleapp.data.dataobjects.Article" は既に拡張されています。2010 年 10 月 23 日 6:46:33 PM org.datanucleus.enhancer.DataNucleusEnhancer addMessage SEVERE: DataNucleus Enhancer がエラーで完了しました。詳細については、エンハンサー ログを確認してください。一部のクラスは強化されている可能性がありますが、一部のエラーが発生しました クラスの強化中の失敗 - 詳細についてはログを参照してください(DataNucleusEnhancer.java:620) org.datanucleus.enhancer.DataNucleusEnhancer.main (DataNucleusEnhancer.java:1316) で DataNucleusEnhancer addMessage SEVERE: DataNucleus Enhancer がエラーで完了しました。詳細については、エンハンサー ログを確認してください。一部のクラスは強化されている可能性がありますが、一部のエラーが発生しました クラスの強化中の失敗 - 詳細についてはログを参照してください(DataNucleusEnhancer.java:620) org.datanucleus.enhancer.DataNucleusEnhancer.main (DataNucleusEnhancer.java:1316) で DataNucleusEnhancer addMessage SEVERE: DataNucleus Enhancer がエラーで完了しました。詳細については、エンハンサー ログを確認してください。一部のクラスは強化されている可能性がありますが、一部のエラーが発生しました クラスの強化中の失敗 - 詳細についてはログを参照してください(DataNucleusEnhancer.java:620) org.datanucleus.enhancer.DataNucleusEnhancer.main (DataNucleusEnhancer.java:1316) で
java - JDO を使用してオブジェクトを永続化/取得するときに、DataNucleus DAO オブジェクトで ClassCastException が発生する
Spring と Jetty を使用して単純な Web アプリケーションを作成し、DataNucleus と DB4O を使用して Hello World JDO テストを作成しています。
クラスを問題なく永続化できますが、クラスのクエリを実行すると、 が取得され、ClassCastException
にキャストできませa.b.c.MyClass
んa.b.c.MyClass
。
作成したオリジナルオブジェクトのクラスローダを調べると[WebAppClassLoader@1592226291]
、当然SpringsのWebAppクラスローダです。
同じサーブレット メソッドで永続化操作とクエリ操作の両方を実行しています。単純なクエリを使用して DB からオブジェクトを再読み込みすると、DB から abcMyClass オブジェクトのセットが返されますが、クラスローダーは[sun.misc.Launcher$AppClassLoader@5acac268]
. .
ここの DataNucleus ドキュメントに従ってください http://www.datanucleus.org/extensions/classloader_resolver.html
...JDO2 クラスローディング メカニズムは 3 つのクラス ローダーを使用し
ます * PersistenceManagerFactory を作成するときに、クラス ローダーを指定できます。指定されている場合は、これが最初に使用されます
。 * 2 番目に試行されるクラス ローダーは、現在のスレッドのクラス ローダーです。
* 3 番目に試すクラス ローダーは、PMF コンテキストのクラス ローダーです。
文書化された最初の 2 つのオプションについて説明WebAppClassLoader
し、サーブレットで次のデバッグ手順を実行して、クラスローダーがサーブレットにあることを確認しました。
どちらも[WebAppClassLoader@1592226291]
クラスローダーとして生成されます。
ここでどこが間違っているのかわかりません。
java - JDOがコレクションを取得/永続化しない
次のデータモデルクラスを定義しています。
MyPOJOは、Serializableを実装する単純なクラスです。
myField
これをDataNucleus/JDOを介して永続化して取得すると、正常に読み取ることができますが、 myCollection
nullになります(永続化する前に2つのMyPOJOオブジェクトのベクトルに設定しました)。
google-app-engine - AppEngineデータストアは複数の親から子の数を取得します
Google App Engine(DataNucleus)のデータストアを使用しています。チャットとレーティングの2つのクラスがあります。チャットは複数の評価を受けることができるので、チャットクラスにリストを追加して1対多の関係を作成しました。
未評価のチャットの数を知りたいので、次のようにしました。
すべてのチャットを繰り返し処理し、評価の数が0であるかどうかを確認します。
このソリューションは、チャットが10回ある場合はうまく機能しますが、チャットが500回以上ある場合は、速度がひどいです(15秒以上)。
size()メソッドの方が速いのではないかと思いました。そこで、Query.setFilter( "ratings.size()== 0")を試しましたが、次のエラーが発生します。式の解析中にサポートされていないメソッド:InvokeExpression {[PrimaryExpression {ratings}]。size()}
速度を上げる方法はありますか?
DATANUCLEUS エキスパートからの反応の編集:
これはGoogleのプラグインであり、彼らが責任を負っています(そして、彼らがそのメソッドを実装していないという事実が彼らの問題です...彼らのデータストアはコレクションのサイズを取得する方法を提供すると確信しています)。彼らのプラグインはDataNucleus1.1のみを使用しており、現在2.2を開発しているため、ご想像のとおり、GAE/J環境にはあまり時間がありません。
なぜグーグルは1.1バージョンを使用しているのですか?
java - JDO:PersistenceManagerはシングルトンですか?
基本的なこと:私は、埋め込まれたDB4Oデータベースに裏打ちされたDataNucleusを使用しています。
この簡単なテストを行う場合:
ファイルロック例外が発生します:
これは、がどのように機能するのかわからないことを教えてくれますPersistenceManager
。PersistenceManagerFactory
データをクエリまたは永続化する必要があるときはいつでも電話をかけただけでPersistenceManager
、スレッドセーフなものが得られると思いました。
- アプリケーション全体でPersistenceManagerをシングルトンにする必要がありますか?
- JDO / DataNucleusでは、クエリと更新を実行する複数のスレッドはどのように機能しますか?
java - @Unique は、NeoDatis を使用する DataNucleus では効果がありません
JDO / DataNucleus / NeoDatis データストアの使用
永続化可能なオブジェクトのフィールドに @Unique を追加しましたが、一意の制約に違反する複数のオブジェクトを作成できます。DataNucleus/NeoDatis のドキュメントでは、Unique フィールドがサポートされていることが示唆されています。
同じユーザー名で複数のオブジェクトを DB に追加しても問題ありません。
java - JDO/DataNucleus で Joda-Time DateTime オブジェクトをクエリできますか?
DataNucleus が org.joda.DateTime をサポートしていることがわかります
http://www.datanucleus.org/products/accessplatform_2_2/jdo/types.html
しかし、これは、このフィールドにインデックスを付けて、この時間フィールドに対して「where jodaTimeField > 昨日」などのクエリを実行できるということでしょうか?
それとも、シリアル化に頼らずに保存できるというだけですか?
java - JDO / DataNucleusの「アタッチされた」オブジェクトの意味は何ですか?
DataNucleusのドキュメントでは、分離されたオブジェクトと分離されることの意味について多くのことが説明されていますが、新しいユーザーにとっては、単純なものをスキップします。アタッチされるとはどういう意味ですか?
http://www.datanucleus.org/products/accessplatform_1_1/jdo/attach_detach.html
私が実行した場合:
私が正しく理解していれば、データベースに投稿されたばかりのオブジェクトのコピーを取り戻していますが、それがどのように特別であるかは少しあいまいです。
- そのオブジェクトのフィールドの1つに変更を加えた場合、データベースは自動的に更新されますか?ドキュメントはこれを示唆しているようですが、特にそれを呼び出さないでください。
- これが起こらないようにするには、「切り離す」必要がありますか?
- これ(JDOのアタッチ/デタッチ機能)は、わかりやすい、アトミック、挿入、クエリ、更新、および削除に慣れているSQLとどのように異なりますか?