問題タブ [openjpa]
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.
database - カスタム クエリ ヒントを JPA NamedQueries に割り当てることはできますか
アプリケーションが実行するすべてのクエリにクエリ番号を追加する必要があります。
例: SELECT * FROM ... WHERE ... QUERYNO 123456 ;
OpenJPA はクエリ ヒントをサポートしますが、特定の実装の特定のヒントに対してのみです。
しかし、JPA 仕様と openjpa によると、「無効なヒントまたは特定のデータベースで処理できないヒントは無視されます。それ以外の場合、無効なヒントにより ArgumentException がスローされます。」SO "QUERYNO" をヒントとして指定しても影響はないようです。
実行時に指定するカスタム クエリ ヒントを作成するにはどうすればよいですか?
... Query q = em.createQuery("select m from Magazine m where ... "); q.setHint(" com.me.CustomQueryNoHint ", new Integer(2234)); リスト r = q.getResultList(); ...
jpa - OpenJPAのMavenアーキタイプ
ご挨拶。
私はMavenの調査を始めたばかりで、EclipseでMavenを使用するのと同じようにm2eclipseを使用しています。
グループID:com.rfc.maven.archetypesとアーティファクトID:jpa-maven-archetypeの休止状態ベースのアーキタイプがあることがわかりました
テストフレームワークが含まれているOpenJPAベースのプロジェクションのアーキタイプがあるかどうか誰かが知っていますか?
どうもありがとう。
java - カスケード永続性が新しいエンティティの主キーの生成に失敗するのはなぜですか?
これはコードです:
次に、単体テストでこれを行っています(OpenJPAが使用されています):
OpenJPA は次のように述べています。
ID が自動生成されないのはなぜですか?
java - OpenJPA: ManyToOne 関係のターゲットを @Embedded フィールドにすることはできますか?
外部キーがターゲット クラスの @Embedded フィールドにリンクする ManyToOne 関係を使用しようとしています。これは正常にコンパイルおよび拡張されますが、このコードを実行すると、OpenJPA は例外を報告します。これは OpenJPA 2.0.1 を使用しています。コードでは、これは次のようになります。
MySQL の対応するデータベース スキーマ:
ここで起こっていることは次のとおりです。クラスをPhone
埋め込むクラスがありNormalizedNumber
ます。normalizedNumber
ただし、 は主キーではなく、@Id
クラスの でもありません。とは異なるkey
フィールドがあり@Id
ます。
クラスには、クラスへのUserPhone
参照がありPhone
ます。@ManyToOne
多くのユーザーが同じ電話を共有できるため、これは関係です。テーブルは、 テーブルUsersPhones
の主キーをPhones
外部キーとして使用するのではなく、NormalizedNumber
列を使用します。どうやらこれは JPA では有効ではない可能性がありますが、OpenJPA のマニュアルには、OpenJPA はターゲット列が主キーではない結合を「主キー結合と同じ構文で」サポートすると記載されています。
マニュアルから、これは埋め込みフィールドでも機能すると信じるようになりました。しかし、そうではないので、私はそれを誤解したに違いないと思います。これは私が得る例外です:
「列 'Phones.normalizedNumber' に結合できません。結合をサポートするマッピングによって管理されていません。」
私は今、デバッガーを使用して OpenJPA を 2 日間調べ、何か間違ったことをした場合、またはドキュメントに明示的に記載されていないために合法ではない場合のヒントを見つけました。Javadoc で、OpenJPAEmbedFieldStrategy
が実装していないというヒントを見つけましたJoinable
。だから多分私は不可能を試みています。
したがって、専門家への質問: これは許可されますか? それとも、リレーションのターゲットが埋め込みフィールドではない可能性がありますか (@EmbeddedId を除く)。
埋め込みをオーバーライドしてNormalizedNumber
、normaizedNumber を として定義できます@Id
か?
java - OpenJPA: グループ数を使用して GROUP BY クエリを作成する方法
JPQL では、これと同等のクエリを作成したいと思います。
wherefingerprint
は table の varchar フィールドpage_delta_summary
です。私が持っているのはこれです:
PageDeltaSummary
私のエンティティはどこですか。しかし、次の例外が発生します。
org.apache.openjpa.persistence.ArgumentException: タイプ "class com.su3analytics.sitedelta.model.PageDeltaSummary" に対するクエリ "select d, count(d) from PageDeltaSummary d where d.deltaHistoryId = :deltaHistoryId and d.type = :pageDeltaType GROUP BY d.fingerprint" は無効です。 select 句と having 句には、グループ化句にも表示される集計または値のみを含める必要があります。
count(d) を finger_count として削除するか、GROUP BY を削除すると、クエリは正常に機能します。
助言がありますか?
ありがとう
dictionary - JPA クエリは結果を Java マップとして返すことができますか?
JPA 2.1 はメソッドMap
のみを提供するため、現在、名前付き JPA クエリによって返される 2 つのフィールドに基づいて手動で を構築しています。getResultList()
しかし、このリストは簡単に 30,000 件以上の結果になる可能性があるため、カスタム マッパーまたは同様のものの方がパフォーマンスが高いと思います。
手動で反復せずにマップを構築するためのアイデア。
(休止状態ではなく、OpenJPA を使用しています)
java - Hibernateで継承を使用する際の問題
私はちょっとした演習に取り組んでいますが、selectクエリを呼び出すときにいくつかの問題に直面しています。
基本的に、私は次の方法で抽象クラスを作成しました。
および次の2つのサブクラス:
と
私の環境は次のとおりです。
また、persistencerooコマンドを実行しました。
次に、コントローラークラスを次のように記述しました。
HappyStageには、メソッドfindAbstractStagesByDateGreaterThanがあります。アイデアは、サブクラスからこのメソッドを呼び出し、日付がより大きいすべての抽象ステージを取得することでした。
HappyStageクラスコードは次のとおりです。
問題は、サーバー上でコードを実行して* / happystages / happyに移動すると、次のスタックトレースでnullPointer例外が発生することです。*
JUnitテストを実行すると、おそらくエラーが例外にあることがわかりました。これは、HibernateがSQLクエリを処理する方法に関連しています。いくつかのブレークポイントを追加すると、これが関連するコードである可能性があることがわかりました。
現在、コードをもう少し細かく分類していますが、*すでに同様の問題が発生している人がいるかどうか疑問に思いました。足りないものはありますか?親クラスとして抽象クラスを持っていても大丈夫ですか、それとも「具体的な」クラスとして持っている必要がありますか?*抽象クラスを作成して拡張し、それを使用して、継承された値に基づくクエリですべてのサブクラスをクエリすることができないのは、私には奇妙に思えます。
私の質問は適切に説明されていない可能性があるので、説明を求めてください。
よろしくお願いします
PS:AbstractClassに--Abstractキーワードを付けずに試しました。それでも機能せず、happystages / happyに移動してgetメソッドをトリガーすると(TypedQuery queryResults = HappyStage.findAbstractStagesByDateGreaterThan(dd) ;) "
hibernateで使用される方言SQLクエリを実際のSQLクエリに変換し、MySQLシェルで直接実行したため、MySQlやAbstractとは関係がないようです。
java - OpenJPA - 必要に応じて自動インクリメント フィールドの値を設定する方法
自動インクリメント値として主キーを持つエンティティーをマップするように OpenJPA orm.xml をセットアップしました。私は使用しています
属性であり、すべてうまく機能します。
ただし、場合によっては、特定の ObjectId (使用されてからレコードが削除されたもの) を設定したいと考えています。これは可能ですか?このために新しいエンティティを作成する必要がありますか?
前もって感謝します!
java - JPA トランザクション エラー (データベース側ではなく、値が保持されます)
私は以下のエラーに直面しています:
ID「com.abc.java」を新しいインスタンス「com.abc.java」に割り当てようとして失敗しました。この ID を持つオブジェクトが L1 キャッシュに既に存在します。ID を再利用する前に、このオブジェクトを (以前のトランザクションまたは現在のトランザクションで) 削除する必要があります。このエラーは、水平または垂直にマップされたクラスが自動インクリメント アプリケーション ID を使用し、アプリケーション ID クラスの階層を使用しない場合にも発生する可能性があります。-
jpa - openjpaでSQLログを有効にする方法は?
私はJava、jpsを使用してプログラムを作成しました.今、私は次のようにcosoleのログを見ることができます:
INSERT INTO XYZ (a,b,c) 値 (?, ?, ?) [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement]
ログにクエリを挿入するために渡された値も確認したいのですが、どうすれば確認できますか?AMはjpaプロバイダーとしてopenjpaを使用しています。