問題タブ [jpql]
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.
sql - JPQL IN句:Java-配列(またはリスト、セット...)?
テキストタグが小さいが任意の数の値に設定されているすべてのオブジェクトをデータベースからロードしたいと思います。SQLでこれを実行する論理的な方法は、「IN」句を作成することです。JPQLではINを使用できますが、すべてのパラメーターをINに直接指定する必要があるようです(「in(:in1、:in2、:in3)」のように)。
IN句の値に展開する必要がある配列またはリスト(またはその他のコンテナー)を指定する方法はありますか?
java - JPQL avg 集計関数は整数で機能しますか?
Surgeryという名前の JPA 2 エンティティがあります。IntegerであるtransfusionUnitsという名前のメンバーがあります。
データベースには 2 つのエントリがあります。この JPQL ステートメントを実行します。
期待される結果を生成します。
次のステートメントは、期待される答え5を生成します。
次のステートメントの答えは2.5であると予想していますが、代わりに2.0が返されます。
別の (Float) メンバーでステートメントを実行すると、結果は正しくなります。なぜこれが起こっているのかについてのアイデアはありますか? JPQLで何らかのキャストを行う必要がありますか? これは可能ですか?確かに、ここで些細なことを見逃しています。
java - このJPQLクエリを作成するにはどうすればよいですか?
5つのテーブルがあるとしましょう。
ここで、blogMemberが実際にコメントしたブログと投稿のみを取得したいと思います。つまり、この単純な古いSQLをどのように記述すればよいのでしょうか。
ご覧のとおり、すべてが内部結合であるため、ユーザーがブログの投稿にコメントした行のみが取得されます。したがって、IDが1,2,3の3つのブログに参加したが(ユーザーが参加したブログはtblBlogMembersにあります)、ユーザーはブログ2(たとえば、BlogPostId = 1)にのみコメントしたとします。そのため、その行は取得され、1,3は内部結合であるため取得されません。この種のクエリをJPQLで作成するにはどうすればよいですか?
JPQLでは、次のような単純なクエリしか記述できません。
objUserは、次を使用して提供されます。
したがって、ユーザーが参加しているすべてのブログ(ここではblogIdはブログオブジェクトを表します)を取得すると、ループしてすべての凝ったことを実行できます。しかし、私はこのループビジネスに陥り、Javaコードでこれらすべてを書きたくありません。代わりに、データベースエンジンに任せたいと思います。では、上記のプレーンSQLをJPQLに書き込むにはどうすればよいですか?また、JPQLクエリはどのタイプのオブジェクトを返しますか?すべてのテーブルからいくつかのフィールドのみを選択しているためです。結果をどのクラスに型キャストする必要がありますか?
要件を正しく投稿したと思います。不明な点がある場合はお知らせください。
更新:pascalの回答に従って、上記のSQLクエリのJPQLクエリを作成しようとしました。私は少し問題に直面しています。このクエリは機能していますが、不完全です。
これを次のように変更します。
上記のクエリは機能していません。どうすればこの問題を解決できますか?
java - jpqlにビューに相当するものはありますか?
多くのクエリ間でわずかに異なるだけの複雑な where 句がある場合、SQL では、ほとんどの where 句に基づいてビューを作成し、ビューを複数回クエリします。パフォーマンスと保守性の両方。
jpql にはこれに相当するものはありません。
私はjpql仕様ですか?何か足りない?
乾杯、フィル
java - Java:別の日付に期間を追加するJPQL日付関数
上記のJPQLステートメントでは、SomeClassにはmemebrがありdateAttr
、これはajava.util.Date
であり、@Temporal(javax.persistence.TemporalType.DATE)
アノテーションがあります。
私は(CURRENT_DATE + 1 MONTH)
ビットを実行する方法が必要です-それは現在の状態では明らかに間違っています-しかしJPQLの日付関数を持つドキュメントを見つけることができません。
誰かがJPQL日付関数(およびこの特定のクエリを実行する方法)を文書化したドキュメントの方向に私を向けることができますか?
java - Java:JPQLselectステートメント
select x from X x where x.a.id = :a_id
->常に0個のオブジェクトが選択されます
上記のJPQLステートメントが機能しないのに、以下のステートメントが機能するのはなぜですか?
select a from A a where a.id = :a_id
->a_obj-
select x from X x where x.a = :a_obj
>常に正しい数のオブジェクトが選択されています
どちらのクエリも実行中に例外をスローしませんが、異なる数の結果が取得されます。
ありがとう
アップデート
結合を使用して次のクエリを試しました:
select x from X x, x.a a where x.a.id = :a_id
->予期しないトークンのTopLink例外
そしてこれ:
select x from X x JOIN x.a a where a.id = :a_id
->選択されたオブジェクトの数を常に修正する
後者のクエリで、私は目前の最初の問題を解決しました。ただし、機能するはずのクエリが2つありますが、何らかの理由で機能しません。
select x from X x where x.a.id = :a_id
->常に0個のオブジェクトが選択されています
select x from X x, x.a a where x.a.id = :a_id
->予期しないトークンのTopLink例外
他の誰かが同様の行動に遭遇したことがありますか?
java - JPQLチェック多対多関係
簡単な質問:
ManyToMany 関係で同じエンティティに接続されているエンティティ (たとえば、ユーザー) があります (たとえば、この関係は「友情」を表し、対称的です)。
ユーザー A がユーザー B の「友達」であるかどうかを確認する実行時間の点で最速の方法は何ですか? 「愚かな」方法は、リスト全体を取得してから、そこにユーザーが存在するかどうかを確認することですが、それは明らかにオーバーヘッドです。
JPA2を使用しています
サンプルコードは次のとおりです。
hibernate - JPA Date Arithmetic?
JPA / Hibernateを使用して日付演算を実行することは可能ですか?たとえば、行がいつ作成されたかを示すjava.util.Dateフィールドを持つエンティティがあります。JPQLを使用してクエリを実行し、そのフィールドに日付演算を含めることは可能ですか?たとえば、行のCOUNT(*)を実行してから、そのフィールドで月ごとにGROUP BYを実行できますか?クエリのそのフィールドから月または年のみを返すなど、他の関数を実行できますか?
hibernate - HQLからJPQLへの質問
次のHQLクエリのEclipseLink準拠のJPQLへの変換は何ですか?
(これは、ここから取得したHQLサンプルクエリのバリエーションにすぎません)
EclipseLinkでは、IN関数はプロパティパスをとらないようです:
別の結合でこれを解決できるかもしれませんが、もっとコンパクトなものはありますか?
hibernate - JPQL でのインデックス付き要素アクセス
HQLのように JPQL でインデックス付き要素にアクセスすることは可能ですか:
JPA 2仕様に関連するものを見つけることができませんでした.
ここではEclipseLink JPAをターゲットにしているので、EclipseLink ソリューションを思いついた場合でも問題ありませんが、JPQL 標準ソリューションが推奨されます。