問題タブ [ejbql]
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 - トップリンクのバグ。有効なSQLの結果が空で、結果が空ではない
どうしてそれは可能ですか?
Toplink(DBはOracle)でEJBQLを実行しており、query.getResultList空です。
だが!
ログレベルを切り替えFINEて、TopLinkが生成するSQLクエリを受け取ったとき、データベースでこのクエリを実行しようとしましたが、(奇跡!)空ではない結果が得られました!
その理由は何で、どのように扱われますか?前もって感謝します!
PS例外はありません。
アップデート:
クエリログ:
このクエリは100,000行を返しますが、toplinkはそうではないと信じています...
jakarta-ee - EJBQL を使用した LEFT JOIN テーブル
EJBQL を使用して (基礎となる MySQL データ ソースを使用して) 2 つの EJB を結合しようとしています。問題の2つのテーブルは
と
テーブルは、ロケーション コードとマシンのホスト名の最初の 3 文字で LEFT 結合する必要があります。まっすぐなMySQLでは、コマンドは次のとおりです。
同様のものをEJBQLに入れると、null poninter例外から無効な構文例外まで、あらゆる種類のエラーが発生します-これが私が試したことです:
また、「WHERE」の代わりに「ON」を使用してみましたが、ON を使用すると、予期しないキーワードが EJBQL に返されます...
では、以前にこのようなことを成功させた人はいますか? EJBQL のドキュメントには、LEFT 結合は問題ないことが示されているようです。
ありがとう
編集:私が得ている例外は次のとおりです:
outer or full join must be followed by path expression-- null ポインタの取引と同じ行に埋もれていた
編集2:
マシンと場所の間に関係はありません。残念ながら、それを変更することはできません
jsf - Seamを使用した式言語のEJB-QL:複数の値の検索
列内に2つの値を見つける式を考え出そうとしています。JBoss 4.2.2、JSF 1.2、RichFaces3.3を使用しています。
これらの2つの単一の例では:
それは素晴らしい働きをします。それらを組み合わせようとすると:
AとIの両方をプルするために使用する式のタイプがわかりません。これらのクエリはh:selectOneRadioに添付されています。
Beanの場合、(クエリ以外に)次のようになります。
どんな助けでも大歓迎です!
jpa - データベースにアクセスせずに、スタンドアロン キャッシュから動的 EJB-QL を介して JPA エンティティをロードする方法
ユーザーがかなり自由に構成できる動的 ejb ql クエリを介してロードされる JPA エンティティを取得しました。新しい要件があります。ユーザー固有のクエリによって新しいエンティティが返される場合にのみ、ユーザーが新しいエンティティを作成できるようにする必要があります。したがって、JPAエンティティをインスタンス化し、EJBクエリを動的に作成し、エンティティがデータベースに存在する場合、このクエリによってエンティティがロードされるかどうかを判断する必要があると思います。
どうすればそれができますか?たとえば、新しいJPAエンティティをキャッシュにプッシュして、データベースにアクセスすることなくクエリで質問できるようにするためのスタンドアロンJPAキャッシュはありますか?
java - Hibernate: OFFSET と LIMIT に名前付きパラメーターを使用できませんか?
私は以下NamedQueryを機能させようとしています:
問題は、これにより、サーバーの起動時に次のスタック トレースで Hibernate が爆発することです。
試行錯誤の末、「:offset」と「:limit」をリテラル値 (それぞれ 0 と 10) に置き換えるとうまくいくことがわかりました。これには理由がありますか?名前付きパラメーターをクエリで機能させる方法はありますか?
query.setParameter(1, "someValue");名前付きクエリで位置指定パラメーターを使用してオフセット値と制限値を動的に設定する他の例を見てきましたが、コードを読みにくいナンセンスに劣化させたくありません。名前付きパラメーターは、その種のガベージ コードを取り除くことになっていました。
hibernate - JPQL:スーパークラス結合からサブクラスタイプを決定しますか?
私の質問はこれに非常に似ています:
スーパークラスの Hibernate Criteria クエリを作成し、特定のサブクラスをチェックするにはどうすればよいですか?
...、1 つのことを除いて:
- Hibernate Criteria API の代わりに JPQL クエリを使用しています (まだ JPA プロバイダーとして Hibernate を使用しています)。
2 つのサブテーブル/エンティティ クラス (RankingRound と EliminationRound) を持つスーパー テーブル/エンティティ クラス (Round) を参照しています。次に、JOIN を作成します。
上記のようなrdインスタンスのラウンド型をJPQLで調べる方法はありますか?(基準を JPQL で機能するものに変換することはできないようです。)
java - 休止状態:条件付きクエリが正しく評価されない
次のクエリをHibernateで機能させようとしています:
問題は、次の部分を常に評価しているように見えることです。
...なので:
つまり、に続く条件を満たすオブジェクトのみを返しOR、最初の条件を満たす結果は無視します。に続く条件を削除するORと、クエリは条件を満たすオブジェクトを正しく戻しますm.obj1.count > 0。
クエリの構造に基本的な誤りがあったと思いますが、それが何であるかはわかりません。何か案は?
アップデート
動作するバリアントを見つけました。これは自己結合を使用し、余分な括弧を追加します。
自己結合のないこの同じクエリは機能しません。一見余分な括弧についても同じことが言えます。それらを使用すると、誤った結果が返されます。
だから今私の質問は、自己結合と「余分な」括弧の両方に関して、なぜこのようにクエリを構成する必要があるのかということです。
注目に値するかもしれませんがobj1、obj2同じ外国のエンティティの異なるインスタンスです。したがって、クエリを実行しているテーブルは、単一の外部テーブル内の2つの異なる行を参照しています。これが自己結合が必要だった理由だと思いますが(そしてそれが私が自己結合を試みることにした理由です)、その背後にある理由が正確にはわかりません。どんな説明でも大歓迎です。
java - HibernateEntityQuery および EJBQL の制限
制限HibernateEntityQueryを使用するいくつかのコードを継承しました。EJBQL
さまざまなフィールドを持つ「アクティビティ」テーブル/エンティティがあり、既存の EJBQL 制限は次のようになります。
テーブルには、特定のアクティビティに適用される日 (日/月/火...) を表す 7 つのブール フィールドもあります。ここで、日ごとにクエリを実行したいと思います。ユーザーは関心のある日を選択し、フィルター処理された結果には、ユーザーが選択した日のいずれかに一致するアクティビティが含まれている必要があります。
たとえば、ユーザーが mon/wed/fri をチェックした場合、クエリは、mon = true OR wed = true OR fri = true であるすべてのアクティビティを返す必要があります。
問題EJBQLは、 を使用して制限を適用することANDですが、次のようなことをする必要があります。
「次のいずれかが true の場合に結果を返す」という形式で制限を指定する方法はありますか?
ejbql - EJB クエリで '' 内にパラメータを設定する方法
EJB クエリでは、SQL インジェクション攻撃を避けるために、文字列パラメーターを連結する代わりに setParameters() を使用することをお勧めします。
私の質問は、「SET」を使用して SQL update ステートメントの「」内にパラメーターを設定する方法です。
ランタイムは、パラメーター「para」が見つからないことを訴えます。任意の回避策をいただければ幸いです。
java - EJBQLの名前付きパラメータをクエリで繰り返すことはできますか?
簡単なものです。名前付きパラメーターを使用してEJBQLクエリを使用している場合、実際にクエリを実行するときに値を2回設定する必要がないように、1つのクエリで同じパラメーター名を2回使用できますか?たとえば、次のようなことができるようにしたいと思います。
...そうすること:
両方のフィールドに入力します。これは可能ですか?
私はこれを実行して見ることができたと思いますが、最初に質問することで、私(およびこの質問を見つけた他の人)を少し時間とフラストレーションから救うことができると思いました。