問題タブ [jdoql]
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.
java - Java Queryオブジェクトの作成中に文字列リテラル「by」、SQL予約語をエスケープする
次のコードは、文字列フィールドに SQL 予約語「by」が含まれているため、例外をスローしています。この予約語をどのようにエスケープしますか。このコードは、Google データストア用です。
例外は次のとおりです: org.datanucleus.exceptions.NucleusUserException: クエリに、順不同の JDOQL キーワード (「by」) が含まれています。キーワードは、定義された順序でのみ使用できます。
java - Google App Engine での JDO UnsupportedDatastoreFeatureException
Google App Engineのhttp://db.apache.org/jdo/jdoql_methods.htmlで説明されているように、Map の get メソッドを使用しようとしています。私の定義は次のとおりです。
public class FooInfo { ... @Persistent private Map 投票 = new HashMap(); ... }
そして、次のようにアクセスしようとしました:
クエリ query = persistenceManager.newQuery("SELECT FROM com.foo.app.db.FooInfo where vote.get(\"TOTAL\") >=1")
ただし、Google App Engine は次の例外を返します。
これは、GAE が get メソッドをサポートしていないということですか、それとも正しく使用していないということですか? ありがとう。
google-cloud-datastore - java.lang.Longが永続化できないのはなぜですか?
GAE/JDOでLong型のIDのリストを照会しようとしています。また、結果セットでdetachCopyAll()を呼び出すと、次の例外が発生します。
org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: The class "The class "java.lang.Long" is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data/annotations for the class are not found." is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data for the class is not found.
at org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:241)
at org.datanucleus.jdo.JDOPersistenceManager.jdoDetachCopy(JDOPersistenceManager.java:1110)
at org.datanucleus.jdo.JDOPersistenceManager.detachCopyAll(JDOPersistenceManager.java:1183)
...
Userオブジェクトのリストを照会して、それらをうまく切り離すことができます。Longのようなすべてのプリミティブラッパークラスは永続的であると期待していました。私は何が間違っているのですか?以下は私が使用しているコードです。
google-app-engine - datanucleus-appengine 2.0.0-final で JDOQL クエリを使用してフェッチ グループを適用する方法
datanucleus-appengine の最終バージョン 2.0.0 にアップグレードした後、クエリ API を介して JDOQL クエリを使用すると、フェッチ グループが無視されるように見えるようになりました。ライブラリのバグなのか、これが間違っているのかわかりません。
他のエンティティへの複数の 1:M リスト参照を含む「ユーザー」エンティティが定義されています。これらの参照のフェッチは、フェッチ グループを介して制御します。たとえば、次のようになります。
上記の定義により、私の理解は次のとおりです。
- デフォルトのフェッチ グループのみが使用されている場合、関係はまったくフェッチされません。
- 'bits' フェッチ グループが指定されている場合、userHistory と userBranding をフェッチする必要があります。
- 'content' フェッチ グループが指定されている場合は、userContent をフェッチする必要があります。
JDOQL を使用して電子メール フィールドでユーザーをフェッチする場合、どのフェッチ グループが指定されているかに関係なく、リレーションはまったくフェッチされません。getById() を使用してユーザーをフェッチすると、フェッチ グループが期待どおりに適用されます。
L2 キャッシュをオフにしました (jdoquery.xml で NONE に設定)。
フェッチに使用しているテストケースを以下に示します (バージョン 2.0.0-final を使用すると失敗し、バージョン 1.0.10 で合格します)。
私はこれについて間違った方法で進んでいますか?
google-app-engine - GAE、JDO Long/longタイプで主キーを照会する方法
このように、Long主キーを持つ基本クラスを定義します。
その他のpojoはModelBaseを拡張します。私がこのコードのようにjdoqlによってクエリされたとき
しかし、それは私に例外を与えるだけです。
Keyクラスに「Id」フィールドがあることがわかりましたが、「id.id ==:id」のようにアクセスできません。誰かがそれを修正する方法を教えてもらえますか?どうもありがとうございます!
google-app-engine - リストのクエリで問題が発生しましたGAE JDO の子フィールド
多くの例を見てきましたが、私の問題ではうまくいかないようです。GAE (Java) で JDO を使用しています。エラーメッセージが表示されません。結果が存在するはずであることがわかっている場合、または結果がdispatchIdの空のリストを持つオブジェクトと一致する場合に、結果が得られません。どんな助けでも大歓迎です!
関連するクラスコードは次のとおりです。
dispatchId リストに特定の dispatchId コードが含まれている部門を見つけようとしています。私のJavaサーブレットコードは次のとおりです。
GAE Datastore ビューアー (GAE でライブ) では、私のテスト部門の dispatchId フィールドは次のようになります (これが役立つ場合)。
[u'1353000'、u'0566940'、u'0566936'、u'1368496']
ご意見ありがとうございます... ジョン
jdo - JDOQL 正規表現のサポート
JDOQL は、開始の一致に ^ と終了の一致に $ をサポートしていますか? それらを機能させるのに問題があります。
^ と $ はすでに暗示されているのでしょうか?
datanucleus - datanucleus エラーを伴う一括更新
datanucleus で JDOQL 一括更新を使用しようとしていますが、次の例外が発生します。
12/08/13 13:06:56 INFO DataNucleus.Persistence: プロパティ datanucleus.cache.level2 不明 - 無視されます 12/08/13 13:06:56 INFO DataNucleus.Persistence: ========= ======== 持続性設定 =============== 12/08/13 13:06:56 INFO DataNucleus.Persistence: DataNucleus Persistence Factory - ベンダー: "DataNucleus" バージョン: "2.2.5" 12/08/13 13:06:56 INFO DataNucleus.Persistence: DataNucleus Persistence Factory がデータストア URL="jdbc:derby:;databaseName=metastore_db;create=true" driver="org.apache. derby.jdbc.EmbeddedDriver" userName="APP" 12/08/13 13:06:56 INFO DataNucleus.Persistence: ======================= ================================== 12/08/13 13:06:57 INFO Datastore.Schema:カタログ ""、スキーマ "APP" を "None" を使用して初期化しています自動開始オプション 12/08/13 13:06:57 INFO Datastore.Schema: カタログ ""、スキーマ "APP" 初期化 - 0 クラスの管理 12/08/13 13:06:57 INFO DataNucleus.MetaData: リスナーの登録メタデータの初期化
実行するクエリ: UPDATE myDomain.MTable t SET t.tableName = 'tmp3' WHERE t.tableName == 'tmp' 12/08/13 13:06:57 INFO DataNucleus.JDO: Exception throw JPQL UPDATE query has no update句!クエリは "UPDATE Entity e SET e.param = new_value WHERE [where-clause]" org.datanucleus.exceptions.NucleusUserException: JPQL UPDATE query has no update clause! のようにする必要があります。クエリは、org.datanucleus.query.JDOQLSingleStringParser$Compiler.compileUpdate(JDOQLSingleStringParser.java:236) の "UPDATE Entity e SET e.param = new_value WHERE [where-clause]" のようにする必要があります。 .compileSelect(JDOQLSingleStringParser.java:160) at org.datanucleus.query.JDOQLSingleStringParser$Compiler.compile(JDOQLSingleStringParser.java:125) at org.datanucleus.query.
DN-core-2.2.4、DN-RDBMS-2.2.4、DN-Enhancer-2.1.3、DN-ConnectionPool-2.0.3 を使用しています。
更新プログラムを起動するコード スニペットは次のとおりです。
私が間違っていることについての指針。
私のクエリは、「UPDATE myDomain.A t SET t.tableName = 'tmp3' WHERE t.tableName == 'tmp'」という形式です。
jdo - 1 つの文字列パラメータで複数のオブジェクト属性をチェックする JDO クエリを作成する方法は?
私の所有者クラスには 6 つの文字列属性があります。Owner クラスの 6 つの属性すべてを含む文字列をチェックする JDO クエリを作成したいと考えています。これらの 6 つの属性のいずれかが一致する場合は、その所有者オブジェクトをリストに追加する必要があります。次の JDO クエリ構文を使用していますが、機能しません。
私は次の例外を取得しています:
そのためのクエリをどのように書くことができますか。前もって感謝します。
subquery - サブクエリのフィルタ文字列から外側のクエリを参照することはできますか?
サブクエリ フィルタから、外部クエリを次のように参照します。
しかし、メイン クエリを実行すると、次のエラーが発生します。
結合を実行できる場合にのみ回避できますが、JDO ではサブクエリのインポート、変数、パラメーターの宣言が許可されていないことがわかっています。